我最近在PHP中注意到你可以做到这一点。
$myNewArray = $oldArray + $someArray;
这看起来与我之前在PHP中操作数组时所看到的完全不同。
它是如何以及为何有效?有没有陷阱?
我最近开始在我可能使用array_unshift()
和array_merge()
的某些地方使用它。
答案 0 :(得分:8)
如有疑问,consult the documentation。行为与array_merge不同:array_merge追加/覆盖,+
仅附加。
示例:
<?php
$a = Array('foo'=>'bar','baz'=>'quux');
$b = Array('foo'=>'something else','xyzzy'=>'aaaa');
$c = $a + $b;
$d = array_merge($a,$b);
print_r($c);
print_r($d);
输出 - 如你所见,array_merge用$ b ['foo']覆盖$ a ['foo']的值。 $ a + $ b没有:
Array
(
[foo] => bar
[baz] => quux
[xyzzy] => aaaa
)
Array
(
[foo] => something else
[baz] => quux
[xyzzy] => aaaa
)
答案 1 :(得分:2)
当两个操作数都是数组时,编译器中为+
定义了一个操作。它可以直观地加入它们。
答案 2 :(得分:1)
其中一个陷阱是当其中一个变量不是数组时会发生什么。
array_merge:
Warning: array_merge(): Argument #2 is not an array in ...
+ - 操作者:
Fatal error: Unsupported operand types in ...