我正在试图弄清楚如何合并多个多维数组,同时保留键而不是覆盖。
我有一个脚本循环并在每次循环时生成一个多维数组。我需要将所有这些数组存储在一个新数组中。
例如
$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_merge
和array_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
?
我更喜欢我可以在循环中实现的东西,并逐个添加数组。
由于