Aktueller Standort: Startseite> Neueste Artikel> So verwenden Sie Array_flip () und in_array (), um eine effiziente Suche zu erreichen

So verwenden Sie Array_flip () und in_array (), um eine effiziente Suche zu erreichen

M66 2025-06-03

Bei der täglichen PHP -Entwicklung sind Array -Suchvorgänge sehr häufige Szenarien, z. Obwohl In_array () eine sehr intuitive und benutzerfreundliche Funktion ist, kann die Leistung zu einem Problem werden, wenn Sie vor einem großen Array- oder häufigen Suchszenario gegenüberstehen.

In diesem Artikel werden effizientere Array -Suchmethoden ermittelt, indem array_flip () und in_array () kombiniert werden.

1. Die Nutzungs- und Leistungsprobleme von in_array ()

In_array () ist eine Funktion, die in PHP verwendet wird, um festzustellen, ob ein Wert in einem Array vorhanden ist. Seine Syntax ist wie folgt:

 in_array($needle, $haystack, $strict = false)

Die zugrunde liegende Ebene dieser Funktion ist die lineare Suche, was bedeutet, dass sie Elemente im Array eins nach dem anderen vergleichen. Für kleine Arrays ist dies kein Problem. Aber wenn es Tausende oder noch mehr Array -Elemente gibt und die Suchvorgänge sehr häufig sind, wird seine Leistung zu einem Engpass.

Beispielcode:

 $values = range(1, 100000);
if (in_array(99999, $values)) {
    echo "Gefunden!";
}

Wenn der obige Code ausgeführt wird, durchquert jede Suche das gesamte Array und durchquert im schlimmsten Fall alle 100.000 Elemente.

2. Verwenden Sie Array_flip () , um die Suche in eine Hash -Karte zu konvertieren

Die Funktion von Array_flip () besteht darin, Schlüssel und Werte des Arrays auszutauschen. Seine Zeitkomplexität ist O (n), aber die Komplexität der Suche nach Werten kann O (1) werden.

Beispiel:

 $values = range(1, 100000);
$flipped = array_flip($values);

if (isset($flipped[99999])) {
    echo "Gefunden!";
}

Im obigen Code konvertiert Array_flip () den Wert in einen Schlüssel, während in PHP die Schlüsselsuche der Hash -Tabelle sehr schnell und fast konstant ist. Obwohl die Initialisierung von array_flip () einen gewissen Overhead aufweist, ist die Leistungsverbesserung in häufigen Suchszenarien enorm.

3.. Praktische Anwendungsszenarien für die kombinierte Verwendung

Lassen Sie uns beispielsweise ein praktischere Szenario simulieren.

 $allowed_ids = [101, 205, 309, 402, 588, 999]; // Whitelist
$submitted_ids = [205, 402, 777]; // Benutzer eingereicht ID

// Methode 1:Traditioneller Weg,verwenden in_array
foreach ($submitted_ids as $id) {
    if (!in_array($id, $allowed_ids)) {
        echo "ID {$id} 不在Whitelist中,Operation Ablehnung。" . PHP_EOL;
    }
}

// Methode 2:Optimierungsmethode,verwenden array_flip
$allowed_map = array_flip($allowed_ids);
foreach ($submitted_ids as $id) {
    if (!isset($allowed_map[$id])) {
        echo "ID {$id} 不在Whitelist中,Operation Ablehnung。" . PHP_EOL;
    }
}

Wenn die Anzahl der zulässigen Whitelisten groß wird, ist die Methode zwei erheblich schneller als die Methode eins.

4.. Dinge zu beachten

  • Array_flip () verlangt, dass der Wert des Arrays eindeutig ist, ansonsten werden doppelte Werte überschrieben, was zu Datenverlust führt.

  • Wenn der Wert ein Array oder Objekt usw. ist, der nicht als Schlüsseltyp verwendet werden kann, meldet Array_flip () einen Fehler oder wird automatisch in eine Zeichenfolge konvertiert.

  • Nur verwenden Sie Array_flip (), wenn die Wertschicksuche häufig und Arrays groß sind. Können Sie die Vorteile widerspiegeln. Wenn Sie es nur einmal schauen, verschwendet dies die Leistung.

5. Zusammenfassung

Durch die Kombination von Array_flip () und in_array () können wir die Leistung in Szenarien, in denen häufige Array -Suchen erforderlich sind, erheblich verbessern. Seine Kernidee besteht darin, die "Value -Lookup" in "Key Lookup" umzuwandeln und die Fast -Access -Funktion von PHP -Array -Hash -Tabellen zu nutzen.

Das Beherrschen dieser Technik kann bei der Verarbeitung großer Datenmengen oder der Optimierung der Systemleistung sehr hilfreich sein.