主要区别是两个或者多个数组中如果出现相同键名,键名分为字符串或者数字,需要注意
1)键名为数字时,array_merge()不会覆盖掉原来的值,但+合并数组则会把最先出现的值作为最结果返回,而把后面的数组拥有相同键名的那些值“抛弃”掉(不是覆盖)
2)键名为字符时,+仍然把最先出现的值作为最终结果返回,而把后面的数组拥有相同键名的那些值“抛弃”掉,但array_merge()此时会覆盖掉前面相同键名的值
---- ----- ---- ---- ----- --- ----- -- ----- ----- --- ---
说白了 是这样的
1. 如果没有相同键值的数组元素 array_merge 或者 += 就是合并两个数组元素成一个数组
2.1 如果是数字键值,那+=会抛弃后面的值 以前面的值为准 array_merge会让数组变得更大 把第二个数组的值附加到第一个数组的后面,即有可能出现一个数组中,有两个相同元素的数组。
2.2 如果是字符键值,+=仍然是以前面的值为准,后面相同键值的值抛弃,但array_merge会以后面的值为准,直接覆盖前面的值,也就是抛弃前面的值。
----
$arr1 = array(
'a' => '1',
'b' => '2',
'c' => '3',
'd' => '4',
'1' => '5',
);
$arr2 = array(
'a' => '8',
'bb' => '2',
'cc' => '3',
'd' => '4',
'1' => '63',
);
echo '<pre>';
var_dump(array_merge($arr1, $arr2));
echo '</pre>';
array + 就是以前面的为准
array_merge 就是后面的覆盖前面的 (字符下标)
附加到后面(数字下标)