【问题标题】:Can someone explain why array_merge() won't merge these two seemingly identical arrays?有人可以解释为什么 array_merge() 不会合并这两个看似相同的数组吗?
【发布时间】:2016-05-06 15:08:57
【问题描述】:

我有下面的 sn-p 代码,但我无法弄清楚为什么这两个数组不会合并 - 可能是因为没有 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);

【问题讨论】:

  • 数组合并不能重复。您拥有相同的密钥,因此一组数据必须覆盖另一组数据。

标签: php


【解决方案1】:

来自docs

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

简短的回答是合并正在发生,只是没有按照您想要的方式进行。

【讨论】:

【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2022-01-10
    • 2011-01-17
    • 1970-01-01
    • 2016-06-01
    • 1970-01-01
    • 2013-04-12
    • 2015-08-31
    • 1970-01-01
    • 2012-01-14
    相关资源
    最近更新 更多