php 数组合并array_merge与array_merge_recursive详解

时间:2016-01-23
php合并两个数组,我们可以使用array_merge函数或array_merge_recursive,但这两个函数又有一些区别, array_merge() 函数会将相同的键名覆盖,但array_merge_recursive函数不会进行键名覆盖,而是将多个相同键名的值递归组成一个数组。 本文章向大家介绍这两个函数的使用实例及区别。需要的码农可以参考一下。

PHP合并数组我们可以使用array_merge()函数,array_merge()函数返回一个联合的数组。所得到的数组以第一个输入数组参数开始,按后面数组参数出现的顺序依次追加。

array array_merge (array array1 array2…,arrayN)

下面是一个PHP array_merge合并数组的例子:

<?php
$fruits = array("apple","banana","pear");
$numbered = array("1","2","3");
$cards = array_merge($fruits, $numbered);
print_r($cards);
// 输出结果:
// Array ( [0] => apple [1] => banana [2] => pear [3] => 1 [4] => 2 [5] => 3 )
?>

array_merge_recursive(),将两个数组合并在一起,注意,与array_merge()函数是不一样的,array_merge()的两个数组有重复项时会覆盖掉,而array_merge_recursive()则不会。array_merge_recursive()语法:

array array_merge_recursive(array array1,array array2[…,array arrayN])

array_merge_recursive实例:

<?php
$fruit1 = array("apple" => "red", "banana" => "yellow");
$fruit2 = array("pear" => "yellow", "apple" => "green");
$result = array_merge_recursive($fruit1, $fruit2);
print_r($result);
// 输出结果:
// Array ( [apple] => Array ( [0] => red [1] => green ) [banana] => yellow [pear] => yellow )
?>

现在apple 指向一个数组,由两个颜色值组成的索引数组,还有一种比较怪的做法就是合并数组

总结:

array_merge() 函数会将相同的键名覆盖,而array_merge_recursive() 不会进行键名覆盖,而是将多个相同键名的值递归组成一个数组。