Heim  >  Artikel  >  Backend-Entwicklung  >  Wie finde ich Array-Zeilen mit Spaltenwerten in einem flachen Array mithilfe von Array-Funktionen?

Wie finde ich Array-Zeilen mit Spaltenwerten in einem flachen Array mithilfe von Array-Funktionen?

DDD
DDDOriginal
2024-10-23 17:59:02998Durchsuche

How to Find Array Rows with Column Values in a Flat Array Using Array Functions?

Array-Zeilen mit Spaltenwerten in einem flachen Array finden

In diesem Szenario erhalten Sie zwei Arrays: ein ursprüngliches Array, $arr1 , mit mehreren Spalten und einem sekundären Array, $arr2, das eine Liste eindeutiger ID-Werte enthält. Das Ziel besteht darin, $arr1 zu verfeinern, indem nur die Zeilen ausgewählt werden, die einen in $arr2 gefundenen ID-Wert enthalten.

Eine hocheffiziente Lösung für dieses Problem liegt in der Verwendung der Funktion array_uintersect(). Diese Funktion verwendet einen benutzerdefinierten Rückruf, um Elemente aus beiden Eingabearrays zu vergleichen. In diesem benutzerdefinierten Rückruf greifen wir auf Werte aus der Spalte „id“ zu. Wenn diese Spalte fehlt, greifen wir auf den Wert des Parameters zurück.

array_uintersect() nutzt die Sortiertechnik während der Auswertung, um die Ausführungszeit zu optimieren. Durch den Vergleich von Spaltenwerten und ID-Werten werden die Zeilen in $arr1 identifiziert, deren IDs in $arr2 gefunden wurden. Das resultierende Array umfasst nur die ausgewählten Zeilen, die diese Bedingung erfüllen.

Als Referenz finden Sie unten den Code, der diese Lösung implementiert:

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

Das obige ist der detaillierte Inhalt vonWie finde ich Array-Zeilen mit Spaltenwerten in einem flachen Array mithilfe von Array-Funktionen?. 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