2010-01-10 57 views
2

所以基本上我有这两个数组,我想合并...PHP array_merge_recursive不工作,我希望

array(1) { 
    ["first"]=> 
    array(1) { 
     ["second"]=> 
     array(0) { 
     } 
    } 
} 

array(1) { 
    ["second"]=> 
    array(1) { 
     ["third"]=> 
     array(0) { 
     } 
    } 
} 

这是我想达到的效果...

array(1) { 
    ["first"]=> 
    array(1) { 
     ["second"]=> 
     array(1) { 
      ["third"]=> 
      array(0) { 
      } 
     } 
    } 
} 

但使用$arr = array_merge_recursive($arr1, $arr2)我得到这样的输出:

array(2) { 
    ["first"]=> 
    array(1) { 
     ["second"]=> 
     array(0) { 
     } 
    } 
    ["second"]=> 
    array(1) { 
     ["third"]=> 
     array(0) { 
     } 
    } 
} 

据我了解array_merge_recursive笑我得到了我想要的东西,但显然没有。什么是我的问题的解决方案?

感谢

回答

2

的阵列被合并在同一个 '级别'。您的数组在同一级别上不重叠,其中一个顶级值的'first'和另一个'second'。所以它会产生一个新的数组,其中两个数组都在顶层。

达到你想要的结果,您需要填写

array_merge_recursive($arr1['first'], $arr2) 

然后他们匹配,并且将同样对你的期望相结合。

你也可以编写一些递归遍历数组的函数,找到数组匹配的级别并从那里调用array_merge_recursive

+0

是的,现在我明白了什么是错的。害怕你的代码片段没有帮助我的代码,但认为我(几乎)以另一种方式解决它:) – 2010-01-12 13:46:19

1
$array2 = array('third' => array()); 
$array1['first']['second'] = $array2; 
+0

我认为他的实际数据比较复杂。 – antpaw 2010-01-10 20:52:10