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
)