Heim  >  Artikel  >  Backend-Entwicklung  >  Wie filtere ich Array-Zeilen nach übereinstimmenden Werten mit array_uintersect()?

Wie filtere ich Array-Zeilen nach übereinstimmenden Werten mit array_uintersect()?

Linda Hamilton
Linda HamiltonOriginal
2024-10-23 16:06:02144Durchsuche

How to Filter Array Rows by Matching Values Using array_uintersect()?

Array-Zeilen, die mit Werten übereinstimmen, in einem flachen Array aufbewahren

Hintergrund:

Sie haben eine Array, $arr1, mit mehreren Spalten und ein weiteres Array, $arr2, das eine Liste von Werten enthält. Das Ziel besteht darin, $arr1 zu filtern und nur die Zeilen beizubehalten, in denen die ID-Spalte mit einem beliebigen Wert in $arr2 übereinstimmt.

Lösung:

Verwenden von array_uintersect() :

Die effizienteste Lösung nutzt die Funktion array_uintersect(), die Elemente aus zwei Arrays mithilfe eines benutzerdefinierten Rückrufs vergleicht. In diesem Fall prüft der Rückruf, ob die ID-Werte übereinstimmen.

var_export(
    array_uintersect(
        $arr1,
        $arr2,
        fn($a, $b) =>
            ($a['id'] ?? $a)
            <=>
            ($b['id'] ?? $b)
    )
);

Erklärung:

  • Die Funktion array_uintersect() benötigt zwei Arrays und einen Rückruf als Argumente.
  • Die Rückruffunktion wird für jedes Element aus beiden Arrays aufgerufen und sollte 0 zurückgeben, wenn die Elemente als gleich angesehen werden, 1, wenn das erste Element größer ist, und -1, wenn das zweite Element größer ist .
  • Wenn ein Element keine ID-Spalte hat, wird sein Rohwert zum Vergleich verwendet.
  • Das Ergebnis ist ein Array, das nur die Zeilen von $arr1 enthält, in denen die ID-Spalte mit einem Wert übereinstimmt in $arr2.

Vorteile von array_uintersect():

  • Es handelt sich um eine native PHP-Funktion, die Effizienz und Kompatibilität gewährleistet.
  • Es führt eine Sortierung während der Auswertung durch, was die Leistung optimiert.
  • Es bietet eine prägnante und lesbare Lösung im Vergleich zu iterierten Aufrufen von in_array().

Das obige ist der detaillierte Inhalt vonWie filtere ich Array-Zeilen nach übereinstimmenden Werten mit array_uintersect()?. 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