当前位置: 首页 > 后端技术 > PHP

在PHP中用+号连接数组的结果是什么?

时间:2023-03-30 04:35:15 PHP

我们在开发中,有时候会合并连接两个数组。这个时候就要注意了。不要偷懒直接用+号。为什么?让我们看看下面的代码:$a=[1,2];$b=[4,5,6];$c=$a+$b;打印_r($c);请用第一个直接告诉我它的结果是什么?也许我问这个问题你能猜到,结果是:Array([0]=>1[1]=>2[2]=>6)你可以看到,+运算符连接的数组,结果是一个联盟。即根据key,相同的key不会被覆盖,也不会添加任何key组成新的数组。它并没有真正将两个数组相加。如果我们使用$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);数组([a]=>1[b]=>2[c]=>6)$c=array_merge($a,$b);打印_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()函数的结果是一样的使用+号的结果,因为它们仍然是键比较。因此,合并后的数组不会添加内容。如果没有定义下标,则直接加上数值下标。最后,让我们试试.operator的连接:$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各媒体平台均可搜索【硬核项目经理】