PHP中数组合并有两种方式:array_merge 与 “+”,使用方式如下:
$arr =array_merge($arr1 ,$arr2);
$arr =$arr1 + $arr2 ;
两种方式看似相同,但使用中 坑 还是不少的。
看下面的例子:
<?php $arr1=array(3,3476,123,45,45,'a'=>79); $arr2=array(40,74,435,86,34,3432,'a'=>88); print_r($arr1+$arr2);
结果如下
结论:
使用“+”用于数组合并时,不论是数字索引还是关联索引:
不同的键值元素被合并进一个数组,
相同的键值元素以前者为准,即不会被后者同键的值覆盖
使用场景:两个拥有不同键值的数组,希望原有键值被保留
再来看 array_merge();
<?php $arr1=array(3,3476,123,45,45,'a'=>79); $arr2=array(40,74,435,86,34,3432,'a'=>88); print_r(array_merge($arr1,$arr2));
结果如下:
结论:
使用“array_merge”用于数组合并时:
原有的数字索引全部会被抛弃 (不论是要合并的第一个数组还是第二个),其对应的所有值会放入一个新数组,重新索引。
相同的关联键值元素会被后者同键的值覆盖,关联索引会被保留
使用场景:不需要键值进行关联,只需要数组中的值
要合并的数组的键全部是字符串,而且字符串键都不重复。
在php手册中看到一个好玩的地方,给大家看看
例子很明显,当数字键值超出 PHP_INT_MAX ,php 已经不认为这是数字索引了,而是字符串了。