如何合并多维数组并保留键?

13

这些数组是否有解决方法?

$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("...")
    )
);

注意:

  • 我无法控制数组结构,因此任何需要更改结构的解决方案都不是我寻找的。
  • 我主要关心保留前两个级别的键,但更健壮的解决方案应该可以处理所有级别。

我尝试使用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个数组吗? - HamZa
@tessmore 在问题中已经解释了我尝试过,但效果不如预期。 - developarvin
@HamZaDzCyberDeV 我正在处理的实际代码是不同的。但是第一和第二级键是不变的。当然,最好的解决方案应该完全不关心它们。 - developarvin
1个回答

43

你考虑过使用array_replace_recursive()函数吗?

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接