无法连接PHP中的2个数组
我最近学会了如何使用PHP中的+运算符连接2个数组。
但考虑这个代码...
$array = array('Item 1');
$array += array('Item 2');
var_dump($array);
输出是
array(1){[0] => string(6)“Item 1”}
为什么这不起作用? 跳过简写并使用$array = $array + array('Item 2')
也不起作用。 它与钥匙有什么关系?
两者都有一个0
的密钥,并且组合这些数组的方法会折叠重复。 尝试使用array_merge()
代替。
$arr1 = array('foo'); // Same as array(0 => 'foo')
$arr2 = array('bar'); // Same as array(0 => 'bar')
// Will contain array('foo', 'bar');
$combined = array_merge($arr1, $arr2);
如果数组中的元素使用不同的键,那么+
运算符会更合适。
$arr1 = array('one' => 'foo');
$arr2 = array('two' => 'bar');
// Will contain array('one' => 'foo', 'two' => 'bar');
$combined = $arr1 + $arr2;
编辑:添加了一个代码片段来澄清
使用array_merge()
请参阅此处的文档:
http://php.net/manual/en/function.array-merge.php
将一个或多个数组的元素合并到一起,以便将其中一个的值附加到前一个的末尾。 它返回结果数组。
+
被称为Union运算符,它不同于Concatenation运算符(PHP没有数组)。 说明中明确指出:
+操作符将右手阵列中剩余键的元素附加到左手,而重复键不会被覆盖。
举个例子:
$a = array("a" => "apple", "b" => "banana");
$b = array("a" => "pear", "b" => "strawberry", "c" => "cherry");
$c = $a + $b;
array(3) {
["a"]=>
string(5) "apple"
["b"]=>
string(6) "banana"
["c"]=>
string(6) "cherry"
}
由于您的数组都有一个键为0
条目,因此结果是预期的。
要连接,请使用array_merge
。