PHP array_merge函数和array_merge_recursive函数的区别

一、函数介绍:
1、相同点:
  array_merge()函数和array_merge_recursive()函数的功能都是将多个数组合并成一个数组;所有数字键名的元素都会保留,合并后所有的数字键名会重新从0开始索引。
 
2、不同点:
  array_merge_recursive()会递归的合并多维数组的所有数组子元素,而array_merge()只会合并顶层元素;对于键名为非数字、且相同的元素,array_merge()函数合并后,只会保留最后一个元素,而array_merge_recursive()会将它们的键值全部保留到共同键名下的子数组中。
 
二、对比举例:
1、索引键名:
  array_merge函数和array_merge_recursive函数对数字键名的索引数组的处理演示。​
<?php
$array1 = array('0'=>'000', '1'=>array('爱E族'));
$array2 = array('2'=>'222', '1'=>'aiezu.com');
print_r(array_merge($array1, $array2));
print_r(array_merge_recursive($array1, $array2));
输出:
Array
(
    [0] => 000
    [1] => Array
        (
            [0] => 爱E族
        )
    [2] => 222
    [3] => aiezu.com
)
Array
(
    [0] => 000
    [1] => Array
        (
            [0] => 爱E族
        )
    [2] => 222
    [3] => aiezu.com
)
  上面代码可以看出,两个函数对数字键名索引数组处理完全相同,都会忽略相同键名,而是单纯的将所有元素放到一个数组,然后再从0开始重建键名。
 
2、关联数组:
  array_merge函数和array_merge_recursive函数对非数字键名的关联数组的处理演示。​
<?php
$array1 = array('aa'=>'000', 'bb'=>array('爱E族'));
$array2 = array('cc'=>'222', 'bb'=>'aiezu.com');
print_r(array_merge($array1, $array2));
print_r(array_merge_recursive($array1, $array2));
输出:
Array
(
    [aa] => 000
    [bb] => aiezu.com
    [cc] => 222
)
Array
(
    [aa] => 000
    [bb] => Array
        (
            [0] => 爱E族
            [1] => aiezu.com
        )

    [cc] => 222
)
  上面代码可以看出,对于关联数组,相同的“bb”键名,array_merge()函数合并后,只会保留最后一个“aiezu.com”,而array_merge_recursive()会将它们的键值全部保留到键名为“bb”的子数组中。

0 个评论

要回复文章请先登录注册