2012-02-17 95 views
2

比方說,我有兩個數組,像這樣:多維數組合並操作內環

$array1 = array('A' => array(
     'B' => array(
      'C' => array(
       'D' => array(
        'data' => array(
         0 => array(
          'id' => 1, 
          'name' => 'name 1'), 
         1 => array(
          'id' => 2, 
          'name' => 'name 2'))))))); 

$array2 = array('A' => array(
     'B' => array(
      'C' => array(
       'E' => array(
        'data' => array(
         0 => array(
          'id' => 3, 
          'name' => 'name 3'), 
         1 => array(
          'id' => 4, 
          'name' => 'name 4'))))))); 

正如你可以看到,這兩個數組有相同的密鑰A,B和C,但使用不同的密鑰之後。如何這兩個數組合併到這樣的事情:

$final_array = array('A' => array(
       'B' => array(
        'C' => array(
         'D' => array(
          'data' => array(
           0 => array(
            'id' => 1, 
            'name' => 'name 1'), 
           1 => array(
            'id' => 2, 
            'name' => 'name 2'))), 
         'E' => array(
          'data' => array(
           0 => array(
            'id' => 3, 
            'name' => 'name 3'), 
           1 => array(
            'id' => 4, 
            'name' => 'name 4'))))))); 

正如你所看到的,在這種情況下,我的陣列一起合併成一個包含兩個不同的密鑰相同的陣列。爲了話,在這裏我把從密鑰E從第二排開始的數組的數組索引C.

任何幫助將不勝感激,謝謝

編輯:現在,怎麼樣,如果我的數組($ array1,$ array2,$ array3,$ array4等)在foreach循環中生成,我如何將所有這些數組合並在一起(注意,我不知道數組的數量)

回答

6

http://php.net/manual/en/function.array-merge-recursive.php

print_r(array_merge_recursive($array1, $array2)); 

這應該可以做到。

補充:

$collection=array(); 
foreach() { 
    $collection[]=$myArray; //here you add your array to collection 
} 
print_r(call_user_func_array('array_merge_recursive', $collection)); 
+0

不錯的解決方案好友 – Shaheer 2012-02-17 20:18:43

+0

謝謝你,你剛從一定的死亡拯救了我的生命 – user765368 2012-02-17 20:21:13

+0

如果你沒有更多的問題,請不要忘記打勾我的答案。 :) 樂意效勞。 – 2012-02-17 20:23:06

-1

我沒有測試過這一點,但試試這個代碼:

foreach($array1 as $key => $val) 
{ 
if(!in_array($key, $array2)) 
{ 
    $array2[$key] = $val; 
} 
} 

編輯

使用韓城Kralj的答案,使用本機的功能很可能是最好的方法要做到這一點,因爲他們更快。

+0

請解釋下投票的原因? – Shaheer 2012-02-17 20:21:48