php manual中的定义与说明:
说明
$array1
[,
array $...
] )
array_merge() 将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。
如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。
如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引。
要点分解:
1、数组中有相同的字符串键名,后面的值会覆盖前面一个值
比如:
$a=array('key'=>key1);
$b=array('key'=>key2);
$c=array_merge($a,$b);
var_dump($c);
输出:
array(1) {
["key"]=>
string(4) "key2"
}
2、如果数组的键名是数字,后面的值将不会覆盖前面的值
比如:
$a=array(1=>key1);
$b=array(2=>key2);
$c=array_merge($a,$b);
var_dump($c);
输出:
array(2) {[0]=>
string(4) "key1"
[1]=>
string(4) "key2"
}
3、如果只给了一个数组,则会对键名以连续的方式从0重新索引
比如:
$a=array(1=>1,2=>2);
$c=array_merge($a);
var_dump($c);
输出:
array(2) {
[0]=>
int(1)
[1]=>
int(2)
}
4、参数为null的时候
array_merge的参数为null的时候会报php-warning并且,返回null(PHP Warning: array_merge(): Argument #2 is not an array)
这个时候我们就要清楚null和array(),的区别,我们可以给它一个空的数组,但是不能给一个null。你的期望可能是如果为null的时候就按空数组计算就行了,很可惜它没有这个功能.为了避免在程序中遇到null出现不可预知的错误,应该对值为null的变量赋值array()。
比如:
------------------------
$a=null;
$b=array(1,2);
array_merge($a,$b);//报错 返回null
--------------------
$a=array();
$b=array(1,2);
array_merge($a,$b);//正常