重新认识php array_merge函数

2015-01-24信息快讯网

PHP中合并数组分成两种情况:1.如果这两个数组中有相同的字符串键名 2.如果这两个数组中有相同的数值键名

重新认识php array_merge函数

今天因一个Bug重新审视了下array_merge()这个函数。

定义:array_merge ― 合并一个或多个数组

规范:array array_merge(array $array1 [, array $...])

说明:

1. 将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。

2. 如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。   

3. 如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引。

这个函数在手册中有详尽示例,用途也很广且实用。

今天遇到的一个问题是手册中有警告的,只是此前没注意到,导致了一个致命的错误。如下:

PHP >= 5.0 版本,array_merge() 只接受array类型的参数。不过可以用强制转换来合并其它类型。

对于是foreach等代码产生的数组变量要注意了,要么初始化该变量为空数组,要么就在合并时做个强制转换。不然,会有大苦头吃。因此,保持一个初始化变量的习惯也是个好事。

PHP中合并数组分成两种情况

1、如果这两个数组中有相同的字符串键名:

<?php
 
 $book1 = array('linux'=>'linux服务器配置与管理','php'=>'PHP程序设计');
 $book2 = array('linux'=>'服务器配置与管理','jsp'=>'PHP'); 
 
 $result = array_merge($book1,$book2);
 print_r($result);
?>

输出为:

Array ( [linux] => 服务器配置与管理 [php] => PHP程序设计 [jsp] => PHP )

 
说明,后者将替换前者。但如果使用的是array_merge_recursive()则可保留,并作一个子数组存在。如:
 

<?php
 
 $book1 = array('linux'=>'linux服务器配置与管理','php'=>'PHP程序设计');
 $book2 = array('linux'=>'服务器配置与管理','jsp'=>'PHP'); 
 
 $result = array_merge_recursive($book1,$book2);
 print_r($result);
?>

输出为:

Array ( [linux] => Array ( [0] => linux服务器配置与管理 [1] => 服务器配置与管理 ) [php] => PHP程序设计 [jsp] => PHP )

 
2、如果这两个数组中有相同的数值键名:

<?php
 
 $book1 = array('linux服务器配置与管理','PHP程序设计');
 $book2 = array('服务器配置与管理','PHP'); 
 
 $result = array_merge($book1,$book2);
 print_r($result);
?>

结果是:

Array ( [0] => linux服务器配置与管理 [1] => PHP程序设计 [2] => 服务器配置与管理 [3] => PHP )

 
这时,如果数组中包含相同的数字键名,则后面的不会覆盖前面的值,而是后面的键值按顺序依次增加,附在后边。明白了吗,^_^

php中JSON的使用与转换
php rsa加密解密使用详解
ThinkPHP 404页面的设置方法
THINKPHP内容分页代码分享
php+mysql删除指定编号员工信息的方法
php计划任务之ignore_user_abort函数实现方法
php实现utf-8转unicode函数分享
php使用fputcsv()函数csv文件读写数据的方法
PHP跨平台获取服务器IP地址自定义函数分享
php中mail函数发送邮件失败的解决方法
php提示Warning:mysql_fetch_array() expects的解决方法
PHP使用array_multisort对多个数组或多维数组进行排序
php中Array2xml类实现数组转化成XML实例
PHP中array_slice函数用法实例详解
php中in_array函数用法探究
PHP实现更新中间关联表数据的两种方法
浅析PHP中strlen和mb_strlen的区别
PHP提示Deprecated: mysql_connect(): The mysql extension is deprecated的解决方法
PHP实现数组递归转义的方法
PHP之autoload运行机制实例分析
php+MySQL判断update语句是否执行成功的方法
ThinkPHP调用common/common.php函数提示错误function undefined的解决方法
PHP中feof()函数实例测试
PHP中使用strpos函数实现屏蔽敏感关键字功能
PHP中使用sleep函数实现定时任务实例分享
PHP date()函数警告: It is not safe to rely on the system解决方法
PHP函数in_array()使用详解
PHP中array_map与array_column之间的关系分析
php中使用array_filter()函数过滤空数组的实现代码
PHP JSON出错:Cannot use object of type stdClass as array解决方法
PHP中unset,array_splice删除数组中元素的区别
php数组合并array_merge()函数使用注意事项
©2014-2024 dbsqp.com