php中array的相加有不同的处理,可以使用函数也可以使用常用的加号,不过这两者直接还是有些区别的,具体如:
1) 对于加号(+)来说,如果不同的数组有相同的key值,则只返回前面数组的的value,其他相同的key值得则被丢弃;而不同的key值,则都会被保存,并返回;
2) 对于如array_merge 这样的处理函数,对于不同的key是都会一起被保存,而相同的key值会稍有不同,如果key值为数值,则所有的数据都会被保存,而如果key值为字符串,则后面的值会覆盖之前的key对应的值。
$m = array("name" => "zhang", "idc" => "zwt");
$n = array("name" => "wang", "age" => 10);
var_dump($m + $n);
var_dump(array_merge($m, $n));
则对应返回的是:
array(3) {
["name"]=>
string(5) "zhang"
["idc"]=>
string(3) "zwt"
["age"]=>
int(10)
}
array(3) {
["name"]=>
string(4) "wang"
["idc"]=>
string(3) "zwt"
["age"]=>
int(10)
}
而对于如下数据:
$m = array("0" => "zhang", "1" => "zwt");
$n = array("0" => "wang", "2" => 10);
var_dump($m + $n);
var_dump(array_merge($m, $n));
返回的结果为:
array(3) {
[0]=>
string(5) "zhang"
[1]=>
string(3) "zwt"
[2]=>
int(10)
}
array(4) {
[0]=>
string(5) "zhang"
[1]=>
string(3) "zwt"
[2]=>
string(4) "wang"
[3]=>
int(10)
}