PHP合并多个多维数组,同时保留键并且不覆盖其他键

时间:2017-06-26 11:39:01

标签: php arrays multidimensional-array

我正在试图弄清楚如何合并多个多维数组,同时保留键而不是覆盖。

我有一个脚本循环并在每次循环时生成一个多维数组。我需要将所有这些数组存储在一个新数组中。

例如

$Array1 = Array ( [0] => Array ( [5] => 2 ) );
$Array2 = Array ( [0] => Array ( [6] => Array ( [3] => 4 ) ) );
$Array3 = Array ( [1] => 6 );
$Array4 = Array ( [2] => Array ( [5] => Array ( [3] => 8 ) ) );
$Array5 = Array ( [2] => Array ( [5] => Array ( [4] => 10 ) ) );
$Array6 = Array ( [2] => Array ( [5] => Array ( [5] => 12 ) ) );
$Array7 = Array ( [2] => Array ( [6] => Array ( [5] => 14 ) ) );
$Array8 = Array ( [4] => 16 );
$Array9 = Array ( [7] => Array ( [5] => 18 ) ) 
$Array10 = Array ( [670] => Array ( [5] => Array ( [3] => Array ( [4] => 20 ) ) ) );
$Array11 = Array ( [34] => Array ( [5] => Array ( [3] => Array ( [3] => Array ( [9] => 22 ) ) ) ) );

生成的数组延迟数量和每个数组的维度数也会延迟。 我需要将它们全部添加并生成如下数组:

$ArrayTotal = Array (
      [0] => Array (
            [5] => 2
            [6] => Array (
                  [3] => 4
                  )
            )
      [1] => 6
      [2] => Array (
            [5] => Array (
                  [3] => 8
                  [4] => 10
                  [5] => 12
                  )
            [6] => Array (
                  [5] => 14
                  )
            )
      [4] => 16
      [7] => Array (
            [5] => 18
            )
      [670] => Array (
            [5] => Array (
                  [3] => Array (
                        [4] => 20
                        )
                  )
            )
      [34] => Array (
            [5] => Array (
                  [3] => Array (
                        [3] => Array (
                              [9] => 22
                              )
                        )
                  )
            )
      )

有重复的密钥,例如$ArrayTotal[2],但用于访问该值的所有密钥总是不同的。例如,$ArrayTotal[2][5][3]$ArrayTotal[2][5][4]共享第一个键,但用于获取值的键是不同的。 我已尝试使用array_mergearray_merge_recursive,甚至只使用+添加它们。我也试过了:

$out = array();
foreach ($ArrayTotal as $key => $value){
    $out[] = array_merge((array)$ArrayN[$key], (array)$value);
}
$ArrayTotal = $out;

我在哪里循环了生成的所有$ArrayN。但它会覆盖第一维中的重复键。因此,它将不会存储$Array4$Array5$Array6。 另一个小而重要的细节是,键可以是字符串。 像:

 $ArrayX = Array ( ["SomeKey"] => Array ( [5] => Array ( ["OtherKey"] => "TheValue" ) ) );

我的问题是: 如何按照描述生成$ArrayTotal

我更喜欢我可以在循环中实现的东西,并逐个添加数组。

由于

0 个答案:

没有答案