今天记录常用的几种合并数组的方法,除了 array_merge() 和 array_merge_recursive() 两个数组外,还有一个加号“+”,也都能实现合并数组的上的,但各有差别。
加号 “+”
使用加号 “+” 这个数组操作符能很方便的将多个数组进行合并,先看实例:
$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
$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 仅使用一个数组参数:
$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() 相同。
函数实例
$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
)