[1] + [2]!= [1,2](非关联数组上数组联合运算符的行为)

时间:2013-01-13 08:42:12

标签: php arrays operators

[1=>0]+[2=>0]会产生[1=>0,2=>0]。但是对于[1]+[2]使用这种语法糖是否有任何技巧。那么[1]+[2] yeilds [1,2]

注意:我关心的是这种语法,而不是其他相关的PHP函数。

3 个答案:

答案 0 :(得分:5)

请改用array_merge()。我难以理解+与阵列一起使用的奇怪行为,我承诺永远不再使用它。

答案 1 :(得分:5)

+是数组union运算符,它将跳过现有键。

你想要array_merge()在你的例子中将它们连接起来(对于带有数字键的数组,它会这样做。)

不幸的是,没有办法让+运算符超载以执行任何不同的操作。

答案 2 :(得分:1)

这是因为 +是union运算符。它不会附加或合并。

[1] is array(0=>1);
[2] is array(0=>2);

如果你结合它将成为array(0=>1),因为0密钥已存在于第一个数组中。

没有语法糖来做。但是,你可以尝试这个

[1]+[1=>2]

或其他丑陋的表达

[1]+[count([1])=>2]

语法上[1]+[2] == [1,2]根本没有意义。那是python的东西。