2013-05-28 13 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("...") 
    ) 
); 

  • 私は構造を変更する必要があります任意のソリューションは、私が主に興味を持って、私は
  • を探していますものではありませんので、配列構造を制御することはできません最初の2つのレベルのキーを保持していますが、より堅牢なソリューションはすべてのレベルを処理できるものです。

私はarray_merge_recursive()

このような
$x = array_merge_recursive($array1, $array2); 
$x = array_merge_recursive($x, $array3); 
$x = array_merge_recursive($x, $array4); 

を使用してみましたが、あなたはarray_replace_recursive()考えがあり、それは

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

アレイは4つしかありませんか? – HamZa

+0

@テスモアそれは私が試したが、期待どおりに動作しなかったことを説明している質問に既にあります – arvinsim

+0

@HamZaDzCyber​​DeV私が取り組んでいる実際のコードは異なります。しかし、定数は第1と第2のレベルのキーです。もちろん、最善の解決策はそれについて全く気にするべきではありません。 – arvinsim

答えて

21

になりましたか?

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

あなたの頭からPHPマニュアル全体を知っているようです:D – HamZa

+1

@Jack Yep、array_replace_recursive()はやりたいことをやりました。 – arvinsim

+1

@Jackは私の仕事を保存する+1 –