PHP函数 array_merge() 和 array_merge_recursive() 合并数组
今天记录常用的几种合并数组的方法,除了 array_merge() 和 array_merge_recursive() 两个数组外,还有一个加号“+”,也都能实现合并数组的上的,但各有差别。
加号 “+”
使用加号 “+” 这个数组操作符能很方便的将多个数组进行合并,先看实例:
<?php $a = array('a' => 'a', 'b' => 'b'); $b = array('c' => 'c', 'd' => 'd'); $c = $a + $b; print_r($c); ?>
输出结果:
Array ( [a] => a [b] => b [c] => c [d] => d )
总结一下:
使用加号合并数组时,如果键名有重复,将保留前面数组对应的键值,而array_merge()函数正好相反。
array_merge()
函数介绍
array_merge() 函数把两个或多个数组合并为一个数组。如果键名有重复,将保留最后一个此键名对应的值(后面的覆盖前面的,与加号相反)。如果数组是数字索引的,则键名会以连续方式重新索引。
注释:如果仅仅向 array_merge() 函数输入了一个数组,且键名是整数,则该函数将返回带有整数键名的新数组,其键名以 0 开始进行重新索引。(参见例子 2)
函数实例
例子 1
<?php $a1=array("a"=>"Horse","b"=>"Dog"); $a2=array("c"=>"Cow","b"=>"Cat"); print_r(array_merge($a1,$a2)); ?>
输出:Array ( [a] => Horse [b] => Cat [c] => Cow )
例子 2 仅使用一个数组参数:
<?php $a=array(3=>"Horse",4=>"Dog"); print_r(array_merge($a)); ?>
输出:Array ( [0] => Horse [1] => Dog )
array_merge_recursive()
函数介绍
array_merge_recursive() 函数与 array_merge() 函数 一样,将一个或多个数组的元素的合并起来,一个数组中的值附加在前一个数组的后面。并返回作为结果的数组。
但是,与 array_merge() 不同的是,当有重复的键名时,值不会被覆盖,而是将多个相同键名的值递归组成一个数组。
注释:当向 array_merge_recursive() 函数仅仅输入一个数组时,结果与 array_merge() 相同。
函数实例
<?php $a1=array("a"=>"Horse","b"=>"Dog"); $a2=array("c"=>"Cow","b"=>"Cat"); print_r(array_merge_recursive($a1,$a2)); ?>
输出:
Array ( [a] => Horse [b] => Array ( [0] => Dog [1] => Cat ) [c] => Cow )