PHP数组合并的2种方法

1、数组加法:

将$b的元素加到$a的后面,如果有相同的键值(不管是字符串键值还是数字键值)跳过,即保留$a的元素。

$a = array('x0','y0','z0','key0'=>'v0');
$b = array('x1','y1','z1','key0'=>'v1','b1','key1'=>'v2');
$c = $a+$b;
print_r($c);

结果是:

Array
(
    [0] => x0
    [1] => y0
    [2] => z0
    [key0] => v0
    [3] => b1
    [key1] => v2
)

可以看到不管是数字键值0,1,2 还是字符串键值key0都使用的是$a的值,只有不存在的3和key1被加到了后面。

注意:$a+$b并不等于$b+$a

 

2、使用array_merge合并数组

将$b的元素加到$a的后面,如果有相同的字符串键值,覆盖$a的元素,如果是数字键值,那么直接加到$a的后面。

 

$a = array('x0','y0','z0','key0'=>'v0');
$b = array('x1','y1','z1','key0'=>'v1','b1','key1'=>'v2');
$c = array_merge($a,$b);
print_r($c);

 

结果是:

Array
(
    [0] => x0
    [1] => y0
    [2] => z0
    [key0] => v1
    [3] => x1
    [4] => y1
    [5] => z1
    [6] => b1
    [key1] => v2
)

可以看到,保留了$a中的元素,但是字符串键值key0被$b的元素覆盖了,$b的元素加到了后面。如果是两个数字键值的数组合并,使用array_merge得到的是包含了两个数组的所有元素。

帮助记忆的方法:

加法是增加新的,对老的元素忽略;
merge是覆盖。相同字符串键值被覆盖,数字键值被认为是新的元素。

 

 

 

posted on 2013-03-29 11:52  我是Peter  阅读(409)  评论(0编辑  收藏  举报

导航