array_merge()与array_merge_recursive()都是把两个或者多个数组合并成一个数组
- 当合并的数组是索引时,直接合并成新的索引数组,这时array_merge()与array_merge_recursive()得到的结果是一致的
$a1=array("1","2");
$a2=array("3","4");
$a3=array("5","6");
print_r(array_merge($a1,$a2,$a3));
print_r(array_merge_recursive($a1,$a2,$a3));
#结果
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
[5] => 6
)
- 当合并的数组不存在键相同时,所有数组的键值对都是合成的新数组的键值对,这时array_merge()与array_merge_recursive()得到的结果是一致的
$a1=array('a'=>"1",'b'=>"2");
$a2=array('c'=>"3",'d'=>"4");
$a3=array('e'=>"5",'f'=>"6");
print_r(array_merge($a1,$a2,$a3));
print_r(array_merge_recursive($a1,$a2,$a3));
#结果一致
Array
(
[a] => 1
[b] => 2
[c] => 3
[d] => 4
[e] => 5
[f] => 6
)
- 当合并的数组存在键相同时,array_merge()会把最后的元素会覆盖其他元素,array_merge_recursive() 不会进行键名覆盖,而是将多个相同键名的值递归组成一个数组。
$a1=array('a'=>"1",'b'=>"2");
$a2=array('a'=>"3",'d'=>"4");
$a3=array('a'=>"5",'f'=>"6");
print_r(array_merge($a1,$a2,$a3));
print_r(array_merge_recursive($a1,$a2,$a3));
#结果
Array
(
[a] => 5 #键相同,最后一个数组的值覆盖钱的
[b] => 2
[d] => 4
[f] => 6
)
Array
(
[a] => Array #相同键的合并成一个数组
(
[0] => 1
[1] => 3
[2] => 5
)
[b] => 2
[d] => 4
[f] => 6
)
- 向 array_merge()或者array_merge_recursive() 函数输入一个数组,且键名是整数,则该函数将返回带有整数键名的新数组,其键名以 0 开始进行重新索引
$a1=array(1=>"1",3=>"2");
print_r(array_merge($a1));
print_r(array_merge_recursive($a1));
#结果
Array
(
[0] => 1 以0开始的索引数组
[1] => 2
)
网友评论