有人能解释为什么array_merge()不会合并这两个看似相同的数组吗?

时间:2016-05-06 15:08:58

标签: php

我有下面的代码片段,我无法弄清楚为什么这两个数组不会合并 - 可能是由于不理解100%array_merge如何工作。我期待看到重复,并将两者合并为一个键。运行array_unique会导致错误。任何想法,或可能是合并这两个的替代解决方案?

$a['12345']['label']    = '12345';
$a['12345']['type']     = 'Newspaper';

$b['12345']['label']    = '12345';
$b['12345']['type']     = 'Newspaper';

$result = array_merge($a, $b);

echo "<pre>";
print_r($result);

2 个答案:

答案 0 :(得分:4)

来自docs

  

如果输入数组具有相同的字符串键,则该键的后一个值将覆盖前一个键。但是,如果数组包含数字键,则后面的值不会覆盖原始值,但会附加。

简短的回答是合并正在发生,而不是你想要的方式。

答案 1 :(得分:0)

因为它们具有相同的键。尝试将$ b ['12345']更改为$ b ['12346']并查看它们是否合并。