Unterschiede zwischen assoziativen Array-Spalten finden
Sie haben zwei Arrays mit Zeilen assoziativer Daten und möchten das zweite Array basierend darauf filtern die Werte einer bestimmten Spalte im ersten Array. Die Verwendung von array_diff() reicht hierfür nicht aus, da dabei die gesamten Zeilen und nicht nur die gewünschte Spalte verglichen werden.
Um dieses Problem zu beheben, können Sie die Funktion array_udiff() nutzen, mit der Sie eine benutzerdefinierte Vergleichsfunktion definieren können . Diese Funktion sollte nur die Werte der gewünschten Spalte vergleichen, in diesem Fall des Schlüssels „ITEM“.
So implementieren Sie dies:
function udiffCompare($a, $b) { return $a['ITEM'] - $b['ITEM']; } $arrdiff = array_udiff($arr2, $arr1, 'udiffCompare');
Dies definiert eine benutzerdefinierte Vergleichsfunktion udiffCompare Dadurch werden die „ITEM“-Werte der beiden verglichenen Zeilen subtrahiert. Das Ergebnis dieser Subtraktion bestimmt, ob die Zeilen gleich, unterschiedlich oder welche größer ist.
Indem Sie udiffCompare als drittes Argument an array_udiff() übergeben, weisen Sie die Funktion im Wesentlichen an, diesen benutzerdefinierten Vergleich zu verwenden Funktion, um basierend auf der Spalte „ITEM“ zu bestimmen, welche Elemente in $arr2 sich von Elementen in $arr1 unterscheiden.
Die Ausgabe dieses Codes ist ein Array, das nur die Elemente von enthält $arr2, die in $arr1 nicht vorhanden sind, wobei die ursprüngliche Array-Struktur erhalten bleibt:
Array ( [3] => Array ( [ITEM] => 4 ) )
Diese Demonstration ermöglicht es Ihnen, ein Array basierend auf einem bestimmten Spaltenwert in einem anderen Array effektiv zu filtern und dabei die ursprüngliche Array-Struktur beizubehalten.
Das obige ist der detaillierte Inhalt vonWie kann ich assoziative Arrays basierend auf einer bestimmten Spalte effizient vergleichen und filtern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!