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是覆盖。相同字符串键值被覆盖,数字键值被认为是新的元素。