在数组合并的时候总是会碰到是否会覆盖的问题。因此。我做了一下总结。
先贴出结果。
对于 +
数组中具有相同的键名的值会被覆盖。不论是索引数组还是关联数组
对于array_merge()函数。
如果是关联数组,如果含有相同的键名,后面的值会覆盖前面的值。
如果是索引数组,不会覆盖原来的值,而是直接追加到后面。
<?php
$arr1 = array(0, 1, 2);
$arr2 = array(7, 8, 9, 10);
print_r($rest1 = $arr1 + $arr2); //0 1 2 10
print_r($rest2 = $arr2 + $arr1); //7 8 9 10
print_r(array_merge($arr1, $arr2)); //0 1 2 7 8 9 10
print_r(array_merge($arr2, $arr1)); //7 8 9 10 0 1 2
$arr3 = array('name' =>'zhangsan', 'age' => 25, 'gender' => 'man');
$arr4 = array('height' => 175, 'weight' => '120');
$arr5 = array('name' =>'lisi', 'age'=> 120 );
print_r($rest3 = $arr3 + $arr4);
/*
Array
(
[name] => zhangsan
[age] => 25
[gender] => man
[height] => 175
[weight] => 120
)
*/
print_r($rest4 = $arr4 + $arr3);
/*
Array
(
[height] => 175
[weight] => 120
[name] => zhangsan
[age] => 25
[gender] => man
)
*/
print_r(array_merge($arr3, $arr4));
/*
Array
(
[name] => zhangsan
[age] => 25
[gender] => man
[height] => 175
[weight] => 120
)
*/
print_r(array_merge($arr4, $arr3));
/*
Array
(
[height] => 175
[weight] => 120
[name] => zhangsan
[age] => 25
[gender] => man
)
*/
print_r($rest3 = $arr3 + $arr5);
/*
Array
(
[name] => zhangsan
[age] => 25
[gender] => man
)
*/
print_r($rest5 = $arr5 + $arr3);
/*
Array
(
[name] => lisi
[age] => 120
[gender] => man
*/
print_r(array_merge($arr5, $arr3));
/*
Array
(
[name] => zhangsan
[age] => 25
[gender] => man
)
*/
print_r(array_merge($arr3, $arr5));
/*
Array
(
[name] => lisi
[age] => 120
[gender] => man
)
*/