php数组合并:array_merge与 “+”

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);
 

结果如下

image

  结论

 

使用“+”用于数组合并时,不论是数字索引还是关联索引:

不同的键值元素被合并进一个数组,

相同的键值元素以前者为准,即不会被后者同键的值覆盖

 

使用场景:两个拥有不同键值的数组,希望原有键值被保留

 

再来看 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));
 

结果如下:

image

 

结论

 

使用“array_merge”用于数组合并时:

原有的数字索引全部会被抛弃 (不论是要合并的第一个数组还是第二个),其对应的所有值会放入一个新数组,重新索引。

相同的关联键值元素会被后者同键的值覆盖,关联索引会被保留

 

使用场景:不需要键值进行关联,只需要数组中的值

                要合并的数组的键全部是字符串,而且字符串键都不重复。

 

在php手册中看到一个好玩的地方,给大家看看

image

例子很明显,当数字键值超出 PHP_INT_MAX ,php 已经不认为这是数字索引了,而是字符串了。

 

手册:http://www.php.net/manual/zh/function.array-merge.php

posted @ 2013-02-26 17:02  Gcoder  阅读(448)  评论(0编辑  收藏  举报