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”的子数组中。