Array-Zeilen mit übereinstimmenden Spaltenwerten aus einem separaten flachen Array behalten
Gegeben sei ein Array $arr1 mit mehreren Spalten und ein zweites flaches Array $ arr2 enthält eine Liste spezifischer Spaltenwerte. Das Ziel besteht darin, $arr1 zu filtern und nur die Zeilen zu extrahieren, in denen die Werte in einer bestimmten Spalte mit den Elementen in $arr2 übereinstimmen.
Lösung:
Um diese Aufgabe effizient auszuführen, kann array_uintersect() eingesetzt werden. Diese native Funktion nutzt beim Vergleich einen Sortieralgorithmus, um die Ausführungsgeschwindigkeit zu erhöhen. Es sind zwei Arrays und eine benutzerdefinierte Rückruffunktion erforderlich, um die Vergleichslogik zu bestimmen.
Im bereitgestellten Code nutzt die Rückruffunktion die Array-Destrukturierung, um von jedem Element von $arr1 und $arr2 aus auf die ID-Spalte zuzugreifen. Wenn die ID-Spalte nicht vorhanden ist, wird standardmäßig der Wert des Parameters verwendet.
Der Vergleich prüft, ob die ID-Werte beider Arrays gleich sind, um sicherzustellen, dass die Zeilen in $arr1 mit den Werten in $arr2 übereinstimmen. Das Ergebnis ist ein neues Array, das nur die gewünschten Zeilen aus $arr1 enthält.
Dieser Ansatz bietet aufgrund minimierter Funktionsaufrufe und optimierter Ausführungszeit eine überlegene Leistung gegenüber iterativen Aufrufen von in_array().
Das obige ist der detaillierte Inhalt vonWie behalte ich Array-Zeilen mit übereinstimmenden Spaltenwerten aus einem flachen Array bei?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!