Bei der Verarbeitung von Datenbankabfrageergebnissen ist häufig eine Form der Filterung oder Vorfilterung der Daten auszuführen. PHP bietet einen sehr bequemen Funktionsarray_filter , der uns helfen kann, Daten nach der Abfrage weiter zu verarbeiten. In diesem Artikel wird erläutert, wie Sie Array_filter verwenden, um Datenvorfilter vor der Verarbeitung von Datenbankabfrageergebnissen durchzuführen, um sicherzustellen, dass wir Daten erhalten, die bestimmte Kriterien erfüllen.
Lassen Sie uns zunächst die grundlegende Verwendung der Funktion array_filter verstehen. Array_Filter ist eine integrierte Funktion, die eine Rückruffunktion auf Elemente in einem Array anwendet, wodurch Elemente zurückgegeben werden, die die Anforderungen an festgelegten Bedingungen erfüllen. Der Prototyp der Funktion lautet wie folgt:
array_filter(array $array, callable $callback = null, int $mode = 0): array
$ Array : Das Array zum Filter.
$ Callback : Eine Rückruffunktion, um jedes Element im Array zu testen. Wenn die Rückruffunktion true zurückgibt, wird das Element beibehalten, andernfalls wird es gelöscht.
$ modus : Dieser Parameter bestimmt, wie die Rückruffunktion funktioniert. Die Standardeinstellung ist 0 , was angibt, dass das Element, dessen Rückgabewert der Rückruffunktion true ist, beibehalten wird.
Wenn keine Rückruffunktion übergeben wird, löscht Array_filter alle Elemente, die falsch sind (z. B. Null , 0 , False usw.).
In der tatsächlichen Entwicklung enthalten Datenbankabfrageergebnisse häufig eine große Anzahl von Datensätzen, und wir kümmern uns nur um die Daten, die bestimmten Bedingungen entsprechen. In diesem Fall kann die Vorfilterung in PHP über die Funktion array_filter durchgeführt werden, um die doppelte Filterung auf Datenbankebene zu vermeiden.
Angenommen, wir erhalten ein Array mit Benutzerinformationen aus der Datenbank, und jedes Element ist ein assoziatives Array mit ID- , Namens- und Altersfeldern . Jetzt möchten wir alle Benutzer, die älter als 18 Jahre alt sind, herausfiltern.
<?php
// Angenommen, dies ist das Ergebnis der Datenbankabfrage
$users = [
['id' => 1, 'name' => 'Alice', 'age' => 20],
['id' => 2, 'name' => 'Bob', 'age' => 17],
['id' => 3, 'name' => 'Charlie', 'age' => 25],
['id' => 4, 'name' => 'David', 'age' => 16],
];
// verwendenarray_filterFilterung durchführen
$adultUsers = array_filter($users, function($user) {
return $user['age'] > 18;
});
// Ausgangsfilterergebnisse
print_r($adultUsers);
?>
In diesem Beispiel filtern wir alle Benutzer, die älter als 18 Jahre alt sind, über die Funktion array_filter und eine Rückruffunktion. Auf diese Weise können wir die Abfrage in PHP vorstellen, anstatt die Filterlogik zur Verarbeitung an die Datenbank zu übergeben.
Angenommen, wir möchten nicht nur, dass Benutzer älter als 18 Jahre sind, sondern auch ihre Namen mit dem Buchstaben "A" beginnen. Wir können dies tun, indem wir der Rückruffunktion weitere Bedingungen hinzufügen.
<?php
// verwendenarray_filterFühren Sie mehrere bedingte Filterung durch
$filteredUsers = array_filter($users, function($user) {
return $user['age'] > 18 && strpos($user['name'], 'A') === 0;
});
// Ausgangsfilterergebnisse
print_r($filteredUsers);
?>
In diesem Beispiel überprüfen wir, ob der Name des Benutzers mit dem Buchstaben "A" durch die Strpos -Funktion beginnt und den Benutzer nur dann behalten, wenn das Alter älter als 18 Jahre ist. Auf diese Weise können wir mehrere Bedingungen für das Screening flexibel kombinieren.
Während die Verwendung von Array_filter in PHP die Filterdaten erleichtern kann, bedeutet dies nicht, dass wir uns vollständig darauf verlassen sollten, dass die Filterfunktion von Datenbankabfragen ersetzt wird. Datenbankabfragen sollten so effizient wie möglich sein, insbesondere wenn sie große Datenmengen verarbeiten, sie sollten durch SQL -Anweisungen so weit wie möglich gefiltert werden, um die Belastung der Übertragung und Verarbeitung zu verringern.
In einigen Fällen ist Array_filter in PHP jedoch immer noch ein nützliches Tool, insbesondere für die schnelle Vorfilterung für kleine Datensätze, nachdem die Ergebnisse der Datenbankabfrage zurückgegeben wurden.
Angenommen, wir erhalten Benutzerdaten von http://api.m66.net/user/list über curl und hoffen, Benutzer älter als 18 Jahre herauszufiltern: