12

这些数组有没有办法

$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

1 回答 1

38

你考虑过array_replace_recursive()吗?

print_r(array_replace_recursive($array1, $array2, $array3, $array4));
于 2013-05-28T13:20:33.663 回答