2017-11-24 2 views
0

Ich habe eine Reihe von Arrays, die jedes Mal anders sein können. der untere enthält und Array mit mehr Arrays in ihnen, die nicht von der gleichen Größe sein werden. Ich muss jedes Array durchlaufen und prüfen, ob es einen Unterschied zwischen ihnen gibt. So mit dem angegebenen Array alle möglichen Kombinationen sind wie folgt:Unterschiede im multidimensionalen Array überprüfen

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" 
    ] 
] 
] 

Das ist, was ich versuche:

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; 
       } 
      } 

     } 

    } 

ich, wenn gleiche Array wissen wollen, in einem anderen Array enthalten. Kannst du an meinem Beispiel sehen, dass Array [0] und Array [1] verschiedene Kombinationen von Arrays enthalten. Wenn also eine der Kombinationen genau gleich ist, muss ich einen Fehler anzeigen.

In diesem Fall array_diff ($ arrays [0] [0], $ arrays [1] [0]); sollte ein leeres Array zurückgeben, was bedeutet, dass es keinen Unterschied gibt und ich sollte anzeigen und Fehler.

+0

immer die spezifischen Programmiersprache markieren Sie mit Mühe haben. In diesem Fall PHP. –

+0

Es ist nicht klar, was Sie fragen; Ich denke, Sie wollen etwas zwischen zwei Datenstrukturen unterscheiden. Könnten Sie die Start- und Enddatenstrukturen eindeutig bereitstellen? –

+0

Ich möchte wissen, ob das gleiche Array in einem anderen Array enthalten ist. Kannst du an meinem Beispiel sehen, dass Array [0] und Array [1] verschiedene Kombinationen von Arrays enthalten. Wenn also eine der Kombinationen genau gleich ist, muss ich einen Fehler anzeigen. – Marco

Antwort

0

Ich habe die Lösung ausgearbeitet.

Hier ist sie:

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; 
    } 
Verwandte Themen