PHP的坑之一:array_merge与函数运算符加号的区别

面试中应该会经常遇到,自己平时只在一维数组中使用,今天特意重新查了+和array_merge区别

1. array_merge在参考手册中的说明如下:
array_merge()将两个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。
如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。

2. 对于使用“+”合并数组:
如果数组中有相同的key,则会把最先出现的值作为最终结果返回,而把后面的数组拥有相同键名的那些值“抛弃”掉(注意:不是覆盖而是保留最先出现的那个值)。

[php]
<?php
$a1 = array(1 => "first", "2" => "second", 3 => "third");
$a2 = array(2 => "second value", 3 => "3rd");
print_r($a1 + $a2);
print_r(array_merge($a1, $a2));
[/php]

猜猜结果是啥
[php]
Array
(
[1] => first
[2] => second
[3] => third
)
Array
(
[0] => first
[1] => second
[2] => third
[3] => second value
[4] => 3rd
)

[/php]