乐趣区

关于php:PHP中用号连接数组的结果是

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


$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
     => 6
)

$c = array_merge($a, $b);
print_r($c);

$c = array_merge($b, $a);
print_r($c);

Array
([a] => 1
    [b] => 2
     => 6
)
Array
([a] => 4
    [b] => 5
     => 6
)
Array
([a] => 1
    [b] => 2
     => 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

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

退出移动版