Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann man ein mehrdimensionales PHP-Array basierend auf einem bestimmten Schlüssel effizient deduplizieren?

Wie kann man ein mehrdimensionales PHP-Array basierend auf einem bestimmten Schlüssel effizient deduplizieren?

DDD
DDDOriginal
2024-11-25 13:13:15441Durchsuche

How to Efficiently Deduplicate a PHP Multi-Dimensional Array Based on a Specific Key?

Mehrdimensionales PHP-Array: Deduplizierung basierend auf einem bestimmten Wert

Frage:

Wie können Sie bei einem mehrdimensionalen Array effizient Unterarrays entfernen, die doppelte Werte für ein bestimmtes Array enthalten? Schlüssel?

Problemstellung:

Betrachten Sie das folgende mehrdimensionale Array:

Array
(
[0] => Array
    (
        [0] => dave
        [1] => jones
        [2] => [email protected]
    )

[1] => Array
    (
        [0] => john
        [1] => jones
        [2] => [email protected]

    )

[2] => Array
    (
        [0] => bruce
        [1] => finkle
        [2] => [email protected]
    )
)

Die Aufgabe besteht darin, alle Unterarrays zu entfernen, in denen die E-Mail-Adresse (Index 2) kommt mehrfach vor. In diesem Beispiel würde dies dazu führen, dass entweder das erste oder das dritte Unterarray entfernt wird.

Lösung:

Eine einfache Lösung besteht darin, die Array-Eindeutigkeit zu verwenden, um doppelte E-Mail-Adressen zu entfernen :

$newArr = array();
foreach ($array as $val) {
    $newArr[$val[2]] = $val;    
}
$array = array_values($newArr);

Diese Lösung nutzt die Tatsache, dass Array-Schlüssel in PHP eindeutig sind. Durch die Verwendung der E-Mail-Adresse als Array-Schlüssel wird sichergestellt, dass nur das letzte Vorkommen einer bestimmten E-Mail-Adresse im resultierenden Array erhalten bleibt.

Durch die Verwendung von array_values() am Ende setzen wir die Array-Indizes auf zurück fortlaufende Nummern unter Beibehaltung der deduplizierten Daten.

Hinweis:

  1. Die vorgestellte Lösung priorisiert die letztes Vorkommen der E-Mail-Adresse. Wenn Sie lieber das erste Vorkommen priorisieren möchten, kehren Sie die Reihenfolge des Arrays um, bevor Sie es mit array_reverse() durchlaufen.
  2. Die Indizes im resultierenden Array werden möglicherweise neu angeordnet. Dies ist kein großes Problem, wenn Sie sich nicht auf bestimmte Indizes verlassen.

Das obige ist der detaillierte Inhalt vonWie kann man ein mehrdimensionales PHP-Array basierend auf einem bestimmten Schlüssel effizient deduplizieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn