加入数组PHP的最简单方法

加入数组PHP的最简单方法,php,Php,我有这些数组,我想把它们组合起来,创建一个数组结果 $a[2][3][4][5] = Array('amt' => 20, 'comm' => 10); $b[2][3] = Array('amt' => 30, 'comm' => 20); $c[2][3][4][6] = Array('amt' => 40, 'comm' => 30); $d[2][3][7] = Array('amt' => 50, 'comm' => 4

我有这些数组,我想把它们组合起来,创建一个数组结果

$a[2][3][4][5] = Array('amt' => 20, 'comm' => 10);
$b[2][3]       = Array('amt' => 30, 'comm' => 20);
$c[2][3][4][6] = Array('amt' => 40, 'comm' => 30);
$d[2][3][7]    = Array('amt' => 50, 'comm' => 40);
我曾尝试使用
array\u merge\u recursive()
,但没有成功

我的预期结果是:

[2] => Array( 
    [3] => Array (
        [amt] => 30,
        [comm] => 20, 
        [4] => Array ( 
            [5] => Array(
                [amt] => 20,
                [comm] => 10
            ),
            [6] => Array(
                [amt] => 40,
                [comm] => 30
            ) 
        ),
        [7] => Array(
                [amt] => 50,
                [comm] => 40
            )
    )
)

我只想合并所有相同的键并生成一个组合结果

很难说你用它做什么,或者为什么你的数组是这样设置的,但是我认为没有一种简单的方法可以在不编写自己的代码的情况下做你想做的事情。以下是一些原因

1) 数组的结构不同。例如,要从数组$a和$b中获取“comm”值,可以使用以下变量:

$a[2][3][4][5]['comm']  //  equals 10
$b[2][3]['comm']        //  equals 20
2) 如果要合并它们,最终的数组将由同时具有值和更多数组的数组组成。这不是一个问题,但它确实使事情变得更加复杂。另外,通常当您很难将一个数组组合在一起时,从中获取数据也同样困难

3) 同样,很难说您使用它的目的是什么,但是将每个数据数组添加到同一个一维数组会更容易吗?因此,结果如下所示:

Array (
    [0] = Array('amt' => 20, 'comm' => 10),
    [1] = Array('amt' => 30, 'comm' => 20),
    [2] = Array('amt' => 40, 'comm' => 30),
    [3] = Array('amt' => 50, 'comm' => 40)
)

如果没有更简单的方法,那么最好的办法是在彼此内部创建四个循环(每个数组维度一个循环)。在每个循环中,找出数据是包含更多数组的数组,还是包含要添加的值的数组。如果是值,则将其添加到合并数组中;如果只是另一个数组,则添加空数组并继续下一个循环。这有点难解释,但写出来会花我很长时间。

而不是
array\u merge\u recursive()
你应该使用:


在您的情况下,它的行为就像您替换了
$a
$b
与每个作业的
$result

您希望结果是什么?欢迎使用SO;为了让我们更好地帮助您,您需要提供至少预期的输出、阵列的组合方式以及尝试失败的原因。[2]=>阵列([3]=>阵列([4]=>阵列([5]=>阵列([amt]=>20,[comm]=>10)[6]=>阵列([amt]=>40,[comm]=>30)),[amt]=>30,[comm]=>20[7]=>数组([amt]=>50,[comm]=>40))@user3782464请用这种信息更新问题。我想一些背景解释会有帮助,现在我不知道你为什么要使用这些多维数组,甚至你的预期结果似乎完全没有组织。谢谢你……你拯救了我的世界
$result = array_replace_recursive($a, $b, $c, $d);