Array([0]=>1[1]=>2[2]=>6)
看出来了吧,用+号操作符连接的数组,结果取的是并集。也便是根据键,相同键的不会覆盖,没有键加入进来形成一个新数组。并不是将两个数组真的加起来。
如果我们用$b+$a呢?那么结果便是$b的内容。
$c=$b+$a;print_r($c);Array([0]=>4[1]=>5[2]=>6)
那么我们要得到1,2,4,5,6这样一个数组要怎么办呢?没错,利用array_merge()函数,请把稳数组Key的位置:

$c=array_merge($a,$b);print_r($c);Array([0]=>1[1]=>2[2]=>4[3]=>5[4]=>6)$c=array_merge($b,$a);print_r($c);Array([0]=>4[1]=>5[2]=>6[3]=>1[4]=>2)
如果是key/value形式的Hash数组呢?结果也是一样的,$a中没有键将合并过来,相同的键将不处理。
$a=['a'=>1,'b'=>2];$b=['a'=>4,'b'=>5,'c'=>6];print_r($a+$b);Array([a]=>1[b]=>2[c]=>6)$c=array_merge($a,$b);print_r($c);$c=array_merge($b,$a);print_r($c);Array([a]=>1[b]=>2[c]=>6)Array([a]=>4[b]=>5[c]=>6)Array([a]=>1[b]=>2[c]=>6)
上述Hash数组,利用array_merge()函数的结果和利用+号的结果是一样的,这是由于他们还是进行了键的比拟。以是合并后的数组不会增加内容,如果是未定义下标的则会直接以数字下标添加进去。
末了,我们再试试.操作符的连接:
$c=$a.$b;print_r($c);ArrayArray
好吧,强转成string类型的字符串再拼接起来了,并无特殊的意义。
测试代码:https://github.com/zhangyue0503/dev-blog/blob/master/php/201911/source/PHP%E4%B8%AD%E7%94%A8%2B%E5%8F%B7%E8%BF%9E%E6%8E%A5%E6%95%B0%E7%BB%84%E7%9A%84%E7%BB%93%E6%9E%9C%E6%98%AF%EF%BC%9F.php
参考文档:https://www.php.net/manual/zh/language.operators.array.php