2013-05-28 54 views
8

是否有這些陣列如何在保存鍵的同時合併多維數組?

$array1 = array(
    '21-24' => array(
     '1' => array("...") 
    ) 
); 

$array2 = array(
    '21-24' => array(
     '7' => array("..."), 
    ) 
); 

$array3 = array(
    '25 and over' => array(
     '1' => array("...") 
    ) 
); 

$array4 = array(
    '25 and over' => array(
     '7' => array("...") 
    ) 
); 

被合併而導致進入下面的陣列的方法嗎?

array(
    '21-24' => array(
     '1' => array("..."), 
     '7' => array("...") 
    ),  
    '25 and over' => array(
     '1' => array("..."), 
     '7' => array("...") 
    ) 
); 

注意

  • 我沒有在陣列結構,這樣就需要改變結構沒有任何解決辦法控制我所期待的
  • 我主要興趣保留前兩個級別的密鑰,但更強大的解決方案是可以處理所有級別的解決方案。

我試着用array_merge_recursive()這樣

$x = array_merge_recursive($array1, $array2); 
$x = array_merge_recursive($x, $array3); 
$x = array_merge_recursive($x, $array4); 

但卻造成

array(
    '21-24' => array(
     '1' => array("..."), 
     '2' => array("...") 
    ),  
    '25 and over' => array(
     '1' => array("..."), 
     '2' => array("...") 
    ) 
); 
+0

你只有4個陣列嗎? – HamZa

+0

@tessmore它已經在問題解釋,我試過但沒有按預期工作 – arvinsim

+0

@HamZaDzCyber​​DeV我正在處理的實際代碼各不相同。但不變的是一級和二級鍵。當然,最好的解決方案根本不應該關心這一點。 – arvinsim

回答

21

你有沒有考慮array_replace_recursive()

print_r(array_replace_recursive($array1, $array2, $array3, $array4)); 
+4

這就像你從頭腦裏知道整個PHP手冊:D – HamZa

+1

@Jack Yep,array_replace_recursive()做了我想做的事情。 – arvinsim

+1

@Jack拯救我的一天它的工作+1 –