2017-11-24 6 views
0

毎回異なる配列のセットがあります。下のものには同じサイズのものは含まれていないより多くの配列が含まれています。 私は各配列をループし、それらの間に違いがあるかどうかをチェックする必要があります。 だから与えられた配列で、すべての可能な組み合わせは以下の通りです:多次元配列の違いを確認

array_diff($arrays[0][0],$arrays[1][0]); 
array_diff($arrays[0][1],$arrays[1][1]); 
array_diff($arrays[0][1],$arrays[1][2]); 


$arrays = [ 
0 => [ 
    0 => [ 
    9 => "39" 
    10 => "40" 
    14 => "62" 
    ] 
    1 => [ 
    9 => "38" 
    10 => "40" 
    14 => "63" 
    ] 
] 
1 => [ 
    0 => [ 
    9 => "39" 
    10 => "40" 
    14 => "62" 
    ] 
    1 => [ 
    9 => "39" 
    10 => "40" 
    14 => "64" 
    ] 
    2 => [ 
    9 => "39" 
    10 => "41" 
    14 => "62" 
    ] 
] 
] 

これは私がしようとしていますものです:

foreach($combinations as $set_id => $comb) 
    { 
     foreach($comb as $key => $selections) 
     { 

      if(isset($combinations[++$set_id][$key])){ 
       if(!empty(array_diff($selections, $combinations[++$set_id][$key]))){ 
        return false; 
       } 
      } 

     } 

    } 

は、私は同じ配列を別の配列に含まれているかどうかを知りたいです。私の例から、配列[0]と配列[1]に配列の異なる組み合わせが含まれていることが分かります。だから組み合わせの1つがまったく同じ場合、私はエラーを表示する必要があります。

この場合、array_diff($ arrays [0] [0]、$ arrays [1] [0]);違いがないことを意味する空の配列を返さなければならず、私は表示とエラーを表示する必要があります。

+0

は常にあなたがに問題がある特定のプログラミング言語にタグを付けます。この場合、PHP。 –

+0

あなたが何を求めているのかははっきりしない。私はあなたが2つのデータ構造の間にいくつかの違いを得たいと思う。開始と終了のデータ構造を明確に提供できますか? –

+0

同じ配列が別の配列に含まれているかどうかを知りたい。私の例から、配列[0]と配列[1]に配列の異なる組み合わせが含まれていることが分かります。だから組み合わせの1つがまったく同じ場合、私はエラーを表示する必要があります。 – Marco

答えて

0

私は解決策を研究しました。

ここにある:

private function validatePossibleConbinations($combinations) 
    { 
     $error = true; 

     foreach($combinations as $set_id => $comb) 
     { 
      $nextArray = ++$set_id; 

      foreach($comb as $key => $selections) 
      { 
       if(isset($combinations[$nextArray])){ 

        foreach($combinations[$nextArray] as $nextComb){ 

         if($comb[$key] === $nextComb){ 

         $error = false; 

         } 

        } 

       } 

      } 

     } 
     return $error; 
    }