Heim >Backend-Entwicklung >PHP-Tutorial >Wie filtere ich Array-Zeilen basierend auf Spaltenwerten, die mit bestimmten Werten übereinstimmen?

Wie filtere ich Array-Zeilen basierend auf Spaltenwerten, die mit bestimmten Werten übereinstimmen?

Linda Hamilton
Linda HamiltonOriginal
2024-10-23 18:57:31909Durchsuche

How to Filter Array Rows Based on Column Value Matching Specific Values?

Zeilenteilmenge basierend auf der Einbeziehung von Spaltenwerten

Betrachten Sie ein Array, $arr1, mit mehreren Spalten und ein zweites flaches Array, $arr2, enthält bestimmte ID-Werte. Das Ziel besteht darin, $arr1 zu filtern, um nur die Zeilen beizubehalten, in denen ein Spaltenwert mit einem der Werte in $arr2 übereinstimmt.

Frühere Versuche mit Filterfunktionen oder array_search waren erfolglos. Eine praktische Lösung besteht darin, die native PHP-Funktion array_uintersect() zu verwenden.

Diese Funktion verwendet eine anonyme Rückruffunktion, die die ID-Spalte in beiden Eingabearrays auswertet (oder auf den Parameterwert zurückgreift, falls dieser nicht vorhanden ist). Beim Vergleich wird geprüft, ob die Werte gleich sind.

Im Callback wird der Operator => wird verwendet, um die Eingabe-Array-Variablen $a und $b zu erfassen, und der ternäre Operator ?: weist einen Rückgabewert ungleich Null zu.

Unter der Haube führt array_uintersect eine Sortierung während des Auswertungsprozesses durch und optimiert so die Leistung und Ausführung deutlich schneller als iterative in_array()-Aufrufe.

Der folgende Code demonstriert die Lösung:

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

Das obige ist der detaillierte Inhalt vonWie filtere ich Array-Zeilen basierend auf Spaltenwerten, die mit bestimmten Werten übereinstimmen?. 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