2014-06-29 22 views
-1

我有这些数组,我想将它们组合起来并创建一个数组结果。加入数组的最简单的方法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' => 40); 

我试过使用array_merge_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 
      ) 
    ) 
) 

我只希望要合并所有相同的密钥,并生成一个综合作用的结果

+3

你认为结果是什么? – hobbs

+0

欢迎来到SO;为了我们更好地帮助您,您需要提供至少预期的输出,数组应该如何组合,以及为什么您尝试失败。 –

+0

=> Array([3] => Array( [4] => Array( [5] => Array([amt] => 20,[comm] => 10) [6] = >阵列([amt] => 40,[comm] => 30) \t \t \t),[amt] => 30,[comm] => 20 [7] => Array([amt] => 50 ,[comm] => 40 ) ) – user3782464

回答

1

相反的array_merge_recursive()你应该使用array_replace_recursive()

$result = array_replace_recursive($a, $b, $c, $d); 

在你的情况,如果你更换$a ... $b$result每项任务,它的行为。

+0

谢谢你,你拯救我的世界 – user3782464

0

它很难告诉你在使用本作或为什么你的阵列是什么以这种方式设置,但我不认为有一种简单的方法可以在不编写自己的代码的情况下做你想做的事情。这是几个原因。 1)你的数组结构不一样。例如获得“通讯”的价值观出数组$ a和$ b你可以使用这些变量:如果你要合并它们

$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) 
) 

如果不这样做,然后你最好的选择将是使对方内线四个回路(每个数组维度)的任何简单的方法。在每个循环内找出数据是具有更多数组的数组,还是具有要添加的值的数组。如果它的值,然后将它们添加到合并数组,如果它只是另一个数组,然后添加一个空数组并继续下一个循环。它有点难以解释,但写出来会让我永远。