PHP:将数组添加在一起

2022-08-30 11:40:29

有人可以帮我解释一下吗?我有两段代码,一段按预期工作,但另一段没有。

这有效

$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中的一个错误?


答案 1

这是有文档记录且正确的:http://us3.php.net/manual/en/language.operators.array.php

+ 运算符将剩余键的元素从右手数组追加到左手数组,而重复的键不会被覆盖。

所以我想这不是php中的一个错误,假设发生了什么。我以前也没有注意到这一点。


答案 2

简而言之,这是有效的,因为如果您同时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
)