【问题标题】:How to merge multidimensional arrays while preserving keys?如何在保留键的同时合并多维数组?
【发布时间】:2013-05-23 11:33:04
【问题描述】:

这些数组有办法吗

$array1 = array(
    '21-24' => array(
        '1' => array("...")
    )
);

$array2 = array(
    '21-24' => array(
        '7' => array("..."),
    )
);

$array3 = array(
    '25 and over' => array(
        '1' => array("...")
    )
);

$array4 = array(
    '25 and over' => array(
        '7' => array("...")
    )
);

将哪个结果合并到下面的数组中?

array(
    '21-24' => array(
        '1' => array("..."),
        '7' => array("...")
    ),      
    '25 and over' => array(
        '1' => array("..."),
        '7' => array("...")
    )
);

注意:

  • 我无法控制数组结构,因此任何需要更改结构的解决方案都不是我想要的
  • 我主要对保留前 2 个级别的密钥感兴趣,但更强大的解决方案是可以处理所有级别的解决方案。

我尝试像这样使用array_merge_recursive()

$x = array_merge_recursive($array1, $array2);
$x = array_merge_recursive($x, $array3);
$x = array_merge_recursive($x, $array4);

但结果是

 array(
    '21-24' => array(
        '1' => array("..."),
        '2' => array("...")
    ),      
    '25 and over' => array(
        '1' => array("..."),
        '2' => array("...")
    )
);

【问题讨论】:

  • 你只有4个数组吗?
  • @tessmore 问题已经在解释我尝试过但没有按预期工作
  • @HamZaDzCyber​​DeV 我正在处理的实际代码各不相同。但不变的是一级和二级密钥。当然,最好的解决方案根本不应该关心这个。

标签: php arrays array-merge


【解决方案1】:

你考虑过array_replace_recursive()吗?

print_r(array_replace_recursive($array1, $array2, $array3, $array4));

【讨论】:

  • @Jack 是的,array_replace_recursive() 做了我想做的事。
  • @Jack 完美 :-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-12-14
  • 2015-12-27
  • 2011-12-12
  • 2013-07-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-22
相关资源
最近更新 更多