3 Stimmen

PHP - Wie man ein mehrdimensionales Array auf doppelte Elementwerte in beliebiger Reihenfolge testet

Ich bin mir nicht sicher, ob der Titel wirklich das wiedergibt, was ich frage, also hier ist, was ich versuche zu tun:

Ich habe ein Array von Arrays mit jeweils vier ganzen Zahlen, dh.

Array(Array(1,2,3,4), Array(4,2,3,1), Array(18,3,22,9), Array(23, 12, 33, 55))

Im Grunde genommen muss ich eines der zwei Arrays entfernen, die die gleichen Werte in beliebiger Reihenfolge haben, z. B. Indizes 0 und 1 im obigen Beispiel.

Dies kann ich ziemlich einfach tun, wenn es nur zwei Elemente zu überprüfen gibt, indem ich den besten Antwortcode in dieser Frage verwende.

Mein mehrdimensionales Array kann zu jedem Zeitpunkt 1-10 Arrays enthalten, daher kann ich anscheinend nicht herausfinden, wie ich eine Struktur wie diese am besten verarbeiten und Arrays entfernen kann, die die gleichen Zahlen in beliebiger Reihenfolge haben.

Vielen Dank!

4voto

Scopey Punkte 6210

Ich habe darüber nachgedacht, und ich glaube, dass die Verwendung eines gut gestalteten Closures mit array_filter der Weg wäre, den ich bei diesem Problem gehen würde:

$matches = array();
$array = array_filter($array, function($ar) use (&$matches) {
    sort($ar);
    if(in_array($ar, $matches)) {
        return false;
    }
    $matches[] = $ar;
    return true;
});

Hier finden Sie ein Beispiel: http://ideone.com/Zl7tlR

Änderung: $array wird Ihr endgültiges Ergebnis sein, ignorieren Sie $matches, da es nur während des Filter-Closures verwendet wird.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X