In der täglichen Entwicklung müssen wir häufig die Datenbankabfrageergebnisse sekundär verarbeiten, wie z. B. schnelles Suchen, Filtern oder Feststellung, ob bestimmte Felder existieren. Zu diesem Zeitpunkt kann die Leistung des Codes betroffen sein, wenn keine effizienten Datenstrukturen verwendet werden. Das von PHP bereitgestellte integrierte Funktion array_flip () ist in diesem Szenario sehr nützlich und kann uns helfen, die Effizienz der Array-Indexierung erheblich zu verbessern.
In diesem Artikel wird ein bestimmtes Beispiel verwendet, um zu erläutern, wie Array_flip () in Kombination mit Datenbankabfrageergebnissen verwendet wird, um eine effizientere Datensuche zu erzielen.
Nehmen wir an, wir haben einen Benutzer der Benutzertabelle, die Struktur lautet wie folgt:
Ausweis | Name | |
---|---|---|
1 | Alice | alice@m66.net |
2 | Bob | bob@m66.net |
3 | Charlie | Charlie@m66.net |
Wir möchten alle E -Mails aller Benutzer aus dieser Tabelle abfragen und beurteilen, ob eine E -Mail in der Geschäftslogik vorhanden ist.
<?php
// Datenbankverbindung(Angenommen angeschlossen)
$sql = "SELECT email FROM users";
$result = mysqli_query($conn, $sql);
$emails = [];
while ($row = mysqli_fetch_assoc($result)) {
$emails[] = $row['email'];
}
// Manche email Existiert es??
$targetEmail = 'bob@m66.net';
if (in_array($targetEmail, $emails)) {
echo "Benutzer existiert";
} else {
echo "Der Benutzer existiert nicht";
}
?>
Der Nachteil der obigen Schreibmethode ist, dass Sie jedes Mal, wenn Sie nachschlagen, das gesamte Array in_array () durchqueren müssen. Wenn die Anzahl der Benutzer Tausende überschreitet, sinkt die Effizienz erheblich.
<?php
$sql = "SELECT email FROM users";
$result = mysqli_query($conn, $sql);
$emails = [];
while ($row = mysqli_fetch_assoc($result)) {
$emails[] = $row['email'];
}
// Das Array umkehren,Implementieren Sie die schnelle Schlüsselsuche
$emailIndex = array_flip($emails);
// 判断Existiert es?,Komplexität wird auf reduziert auf O(1)
$targetEmail = 'bob@m66.net';
if (isset($emailIndex[$targetEmail])) {
echo "Benutzer existiert";
} else {
echo "Der Benutzer existiert nicht";
}
?>
Durch Array_FLIP () verwandeln wir den E -Mail -Wert in einen Schlüsselnamen und erreichen den Effekt der Hash -Indexierung, so dass die Suchffizienz von linearem O (n) auf konstante Stufe O (1) reduziert wird.
Bei Verwendung von Array_flip () gibt es einige Voraussetzungen, die Sie bei der Verwendung von Array_flip () beachten müssen:
Die Werte des Arrays müssen eindeutig sein , andernfalls überschreiben die nachfolgenden Werte den vorherigen Schlüssel.
Wenn der Wert spezielle Typen wie Boolesche Werte, leere Zeichenfolgen usw. enthält, wird empfohlen, die Daten im Voraus zu reinigen.
Für große Daten verfügt Array_flip () immer noch für Speicheraufwand, was für Szenarien geeignet ist, in denen das Abfragevolumen nicht besonders groß ist.
In Anwendungsszenarien wie API -Authentifizierung, Whitelist -Matching und Tag -Filterung können wir alle ähnliche Methoden verwenden, um die Effizienz der Abfrage zu verbessern.
Zum Beispiel: Bestimmen Sie, ob sich der Benutzer in einer Whitelist einer Aktivität befindet:
$whitelist = ['alice@m66.net', 'charlie@m66.net'];
$whiteIndex = array_flip($whitelist);
if (isset($whiteIndex[$targetEmail])) {
// Ermöglichen Sie die Teilnahme an Aktivitäten
}
Bei der Verarbeitung von Datenbankabfrage führt die rationale Verwendung von Array_flip () den Code nicht nur prägnanter, sondern verbessert die Leistung, insbesondere in häufigen Suchszenarien, nicht nur die Leistung. Wenn Sie diese Technik beherrschen, werden Sie in der täglichen Entwicklung wohler.