2016-08-08 16 views
0

2つの "3次元"配列をマージする必要がありますが、私の問題は配列の最初のキーが他のものと同じ場合、結果はちょうど...望ましい。2つの多次元配列とキーをマージしよう

ここでは例:

$a = array(
     1=>array(
       -1 => array(-1=>'a: 1 -1 -1',0=>'a: 1 -1 0',1=>'a: 1 -1 1'), 
       0 => array(-1=>'a: 1 0 -1', 0=>'a: 1 0 0', 1=>'a: 1 0 1'), 
       1 => array(-1=>'a: 1 1 -1', 0=>'a: 1 1 0', 1=>'a: 1 1 1') 
     ) 
); 

$b = array(
     1=>array(
       1 => array(-1=>'b: 1 1 -1',0=>'b: 1 1 0',1=>'b: 1 1 1'), 
       2 => array(-1=>'b: 1 2 -1',0=>'b: 1 2 0',1=>'b: 1 2 1'), 
       3 => array(-1=>'b: 1 3 -1',0=>'b: 1 3 0',1=>'b: 1 3 1') 
     ) 
); 

の$ A + $ bをやっての結果は次のとおりです。

Array 
(
    [1] => Array 
     (
      [-1] => Array 
       (
        [-1] => a: 1 -1 -1 
        [0] => a: 1 -1 0 
        [1] => a: 1 -1 1 
       ) 

      [0] => Array 
       (
        [-1] => a: 1 0 -1 
        [0] => a: 1 0 0 
        [1] => a: 1 0 1 
       ) 

      [1] => Array 
       (
        [-1] => a: 1 1 -1 
        [0] => a: 1 1 0 
        [1] => a: 1 1 1 
       ) 

     ) 

) 

そして、私はちょっと、キー[1]」、PHPに言う必要があります[ 2] [X]と[1] [3] [b]配列の[X]は 'a'配列にないため、結果にマージします。

3つのキーがすべて同じ場合、どのPHPを使用するのか気にしません。キーの値は文字列なので、その値を合計することには興味がありません。そしてはキーを保存する必要があるので、単純なarray_mergeは役に立ちません。私はそれを他の機能と組み合わせる必要があるかもしれませんが、どちらが見えないのでしょうか。

ありがとうございます。

+0

興味のある方は、[array_merge_recursive](http://www.php.net/manual/en/function.array-merge-recursive.php)または[array_replace_recursive](http:// www。 php.net/manual/en/function.array-replace-recursive.php)希望の結果を得るには? – Tom

+0

私はPHPが私に話したがりません。私はちょうどPHPと "話したい"が、私はそれを行う方法にはありません。 – cooper

+0

ここをクリックしてください:http://php.net/manual/en/function.array.php確かに、あなたはそれを簡単にするための何かを見つけることができます。 PHPは通常、関数に意味のある名前を使用します – Mojtaba

答えて

3

あなたはarray_replace_recursive機能を試すことができます:

array_replace_recursive($a, $b); 

出力は次のようになります。それはだ場合

Array 
(
    [1] => Array 
     (
      [-1] => Array 
       (
        [-1] => a: 1 -1 -1 
        [0] => a: 1 -1 0 
        [1] => a: 1 -1 1 
       ) 
      [0] => Array 
       (
        [-1] => a: 1 0 -1 
        [0] => a: 1 0 0 
        [1] => a: 1 0 1 
       ) 
      [1] => Array 
       (
        [-1] => b: 1 1 -1 
        [0] => b: 1 1 0 
        [1] => b: 1 1 1 
       ) 
      [2] => Array 
       (
        [-1] => b: 1 2 -1 
        [0] => b: 1 2 0 
        [1] => b: 1 2 1 
       ) 
      [3] => Array 
       (
        [-1] => b: 1 3 -1 
        [0] => b: 1 3 0 
        [1] => b: 1 3 1 
       ) 
     ) 
) 

これは、$bの値とキーが一致するので、ちょうどダブルチェックを任意のエントリに置き換えられますあなたが望む結果(そうでなければ逆$a$b)。

+0

パーフェクトトム。それが私が探していたものです。ありがとうございました! – cooper

+0

問題ありません。あなたのプロジェクトに最高の運があります。 – Tom

関連する問題