nutzen, um eine Deduplizierung mit maßgeschneiderter Logik zu erreichen. Wenn Sie beispielsweise basierend auf einem bestimmten Schlüssel innerhalb eines Arrays assoziativer Arrays deduplizieren müssen, reicht ein einfaches array_unique()
nicht aus. Eine anonyme Funktion bietet die Flexibilität, solche Szenarien zu bewältigen. Hier erfahren Sie, wie: array_filter()
array_unique()
$array = [ ['id' => 1, 'name' => 'apple'], ['id' => 2, 'name' => 'banana'], ['id' => 1, 'name' => 'apple'], ['id' => 3, 'name' => 'orange'] ]; $uniqueArray = array_unique($array, SORT_REGULAR); //This won't work as expected $uniqueArray = array_reduce($array, function ($carry, $item) { $key = $item['id']; //Deduplication based on 'id' if (!isset($carry[$key])) { $carry[$key] = $item; } return $carry; }, []); $uniqueArray = array_values($uniqueArray); //Convert back to indexed array print_r($uniqueArray);
-Array (das die eindeutigen Elemente akkumuliert) vorhanden ist. Wenn nicht, fügt es das Element hinzu. Schließlich konvertiert array_reduce
das resultierende assoziative Array in ein numerisch indiziertes Array zurück. Die Effizienz hängt jedoch stark von der Implementierung und der Größe des Arrays ab. Bei einer einfachen Deduplizierung basierend auf Wert ist $carry
im Allgemeinen effizienter. Der Overhead, eine anonyme Funktion für jedes Element in einem großen Array aufzurufen, kann sich bemerkbar machen. array_values
, obwohl vielseitig, ist für alle Szenarien möglicherweise nicht die schnellste. Für große Arrays könnte die Verwendung eines benutzerdefinierten Algorithmus mit einer Schleife und einer Hash -Tabelle (z. B. Verwendung
array_unique()
: Für einfache wertbasierte Deduplikation ist array_unique()
im Allgemeinen die schnellste Option. Es ist für diese spezifische Aufgabe optimiert. Dieser Overhead kann für große Arrays von Bedeutung sein. Dieser Ansatz vermeidet den Funktionsaufruf -Overhead von array_filter()
Flexibilität array_reduce()
. Sie ermöglichen es Ihnen, eine benutzerdefinierte Deduplizierungslogik zu definieren, die nicht direkt durch integrierte Funktionen wie unterstützt wird. Zum Beispiel: array_reduce
Wie im ersten Beispiel gezeigt, sind anonyme Funktionen ideal dafür. Eigenschaften). Wenn Ihre Deduplizierungsanforderungen einfach sind, werden integrierte Funktionen wie array_reduce
im Allgemeinen für ihre Effizienz bevorzugt. Anonyme Funktionen leuchten, wenn Sie die Kraft der benutzerdefinierten Logik benötigen, um nicht triviale Deduplizierungsszenarien zu verarbeiten. Immer verschiedene Ansätze bewerten, um das beste Gleichgewicht zwischen Leistung und Code -Lesbarkeit für Ihren spezifischen Anwendungsfall zu bestimmen. array_filter
Das obige ist der detaillierte Inhalt vonKann PHP -Array -Deduplizierung mit anonymen Funktionen implementiert werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!