Heim > Backend-Entwicklung > PHP-Problem > Kann PHP -Array -Deduplizierung mit anonymen Funktionen implementiert werden?

Kann PHP -Array -Deduplizierung mit anonymen Funktionen implementiert werden?

Karen Carpenter
Freigeben: 2025-03-03 16:45:16
Original
496 Leute haben es durchsucht

Kann PHP -Array -Deduplizierung mit anonymen Funktionen implementiert werden? Während PHP keine integrierte Funktion hat, die speziell für diese Aufgabe verwendet wird, die anonyme Funktionen direkt unter Verwendung von anonymen Funktionen in Array-Funktionen wie

oder

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()

Dieser Code verwendet
$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);
Nach dem Login kopieren
mit einer anonymen Funktion, um das Array zu iterieren. Die anonyme Funktion prüft, ob ein Element mit derselben "ID" bereits im

-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

für Objekte oder ein einfaches Array für Skalarwerte) eine bessere Leistung bieten. sind vielfältig:

  • 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
  • oder
  • . Wenn das Array bereits sortiert ist, können bestimmte Algorithmen dies nutzen, um die Effizienz zu verbessern. Für eine einfache Deduplizierung bleiben Sie bei . Für komplexe Szenarien und große Datensätze ist das Profilieren verschiedener Ansätze (einschließlich benutzerdefinierter Algorithmen) entscheidend, um die effizienteste Lösung zu bestimmen. 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:
  • Deduplizierung basierend auf bestimmten Schlüssel in assoziativen Arrays: 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!

Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage