如何合并,而preserving键的多维数组? [英] How to merge multidimensional arrays while preserving keys?

查看:123
本文介绍了如何合并,而preserving键的多维数组?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

是否有这些阵列的方式

  $ ARRAY1 =阵列(
    '21 -24'=>阵列(
        '1'=>阵列(...)
    )
);$数组2 =阵列(
    '21 -24'=>阵列(
        '7'=>阵列(...),
    )
);$ ARRAY3 =阵列(
    '25及以上'=>阵列(
        '1'=>阵列(...)
    )
);$ array4 =阵列(
    '25及以上'=>阵列(
        '7'=>阵列(...)
    )
);

要被合并而导致到下面的阵列?

 阵列(
    '21 -24'=>阵列(
        '1'=>阵列(...),
        '7'=>阵列(...)
    )
    '25及以上'=>阵列(
        '1'=>阵列(...),
        '7'=>阵列(...)
    )
);

注意


  • 我没有在阵列结构控制,因此需要改变结构的任何解决方案是不是我要找

  • 我主要兴趣在preserving第2级的密钥,但一个更强大的解决方案是一个可以处理所有的水平。

我尝试使用 array_merge_recursive()这样

  $ X = array_merge_recursive($数组1,$数组2);
$ X = array_merge_recursive($ X,$ ARRAY3);
$ X = array_merge_recursive($ X,$ array4);

但它导致了

 阵列(
    '21 -24'=>阵列(
        '1'=>阵列(...),
        '2'= GT;阵列(...)
    )
    '25及以上'=>阵列(
        '1'=>阵列(...),
        '2'= GT;阵列(...)
    )
);


解决方案

你有没有考虑 array_replace_recursive()

 的print_r(array_replace_recursive($数组1,$数组2,$ ARRAY3,$ array4));

Is there a way for these arrays

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

to be merged which result into the array below?

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

NOTE:

  • I don't have control over the array structure so any solution that requires changing the structure is not what I am looking for
  • I am mainly interested in preserving the keys of the first 2 levels but a more robust solution is one that can handle all level.

I tried using array_merge_recursive() like this

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

but it resulted in

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

解决方案

Have you considered array_replace_recursive()?

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

这篇关于如何合并,而preserving键的多维数组?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆