咱们在开发中,有时候会将两个数组合并连接起来,这个时候要留神了,千万不要偷懒间接应用+号哦,为什么呢?咱们看看以下代码:

$a = [1, 2];$b = [4, 5, 6];$c = $a + $b;print_r($c);

请用第一间接通知我它的后果是什么?或者我这么问你应该能猜到,它的后果是:

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

各自媒体平台均可搜寻【硬核项目经理】