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函数对数字键名的索引数组的处理演示。
2、关联数组:
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”的子数组中。