PHP:一起添加数组
有人可以帮我解释一下吗? 我有两个代码片段,其中一个按我期望的方式工作,但另一个没有。
这工作
$a = array('a' => 1, 'b' => 2);
$b = array('c' => 3);
$c = $a + $b;
print_r($c);
// Output
Array
(
[a] => 1
[b] => 2
[c] => 3
)
这不是
$a = array('a', 'b');
$b = array('c');
$c = $a + $b;
print_r($c);
// Output
Array
(
[0] => a
[1] => b
)
这里发生了什么?? 为什么第二个版本不会将这两个数组加在一起? 我误解了什么? 我应该做些什么呢? 或者它是PHP中的错误?
这是记录和正确的:http://us3.php.net/manual/en/language.operators.array.php
+操作符将右手阵列中剩余键的元素附加到左手,而重复键不会被覆盖。
所以我想这不是在PHP中的错误,并假设发生了什么。 我还没有注意到这一点。
要添加两个非关联数组,您需要使用array_merge
函数:
将一个或多个数组的元素合并到一起,以便将其中一个的值附加到前一个的末尾。 它返回结果数组。
如果输入数组具有相同的字符串键,则该键的后面的值将覆盖前一个。 但是,如果数组包含数字键,则后面的值不会覆盖原始值,但会被追加。
如果只给出一个数组并且数组索引,那么键将以连续方式重新索引。
要简短,这是有效的,因为如果你print_r $ a和$ b你有:
Array
(
[a] => 1
[b] => 2
)
和
Array
(
[c] => 3
)
正如你所看到的所有元素有不同的键......
至于第二个示例数组,如果您打印$ a和$ b,则您有:
Array
(
[0] => a
[1] => b
)
和
Array
(
[0] => c
)
并且'a'和'c'的0键在这里是问题,第二个数组中具有相同键的元素被丢弃...如果你这样做:
$c = $b + $a; // instead of $c = $a + $b;
结果将是:
Array
(
[0] => c
[1] => b
)
链接地址: http://www.djcxy.com/p/58951.html