Bei der PHP -Entwicklung werden Arrays sehr häufig verwendete Datenstrukturen. Beim Betrieb von Arrays müssen wir häufig das Array filtern, z. B. das Entfernen von Nullwerten, die Aufbewahrung von Elementen, die bestimmte Bedingungen erfüllen usw. Die Funktion array_filter () ist ein sehr praktisches Tool, das speziell dafür entwickelt wurde.
In diesem Artikel wird die grundlegende Verwendung von Array_filter () , der Bedeutung von Parametern und einigen gemeinsamen Nutzungsszenarien im Detail erläutert, um die praktische Anwendung dieser Funktion schnell zu beherrschen.
Array_Filter () ist eine der integrierten Funktionen von PHP. Sein Zweck ist es, eine Rückruffunktion zu verwenden, um jedes Element im Array zu filtern, wodurch nur Elemente mit dem Rückgabewert true bleiben. Seine Syntax ist wie folgt:
array_filter(array $array, ?callable $callback = null, int $mode = 0): array
$ Array : Das ursprüngliche Array zum Filter.
$ callback (optional): Eine Rückruffunktion, mit der festgestellt wird, ob ein Element beibehalten wird. Wenn NULL , sind die Standard -Entfernungswerte falsch , null , leerer String '' , Nummer 0, leeres Array [] und andere "falsche Werte".
$ modus (PHP 7.4+): Gibt an, ob der an die Rückruffunktion übergebene Inhalt ein Wert-, Schlüssel- oder Schlüsselwertpaar ist.
Dies ist die häufigste Möglichkeit, es zu verwenden, geeignet für die Reinigung von Formulardaten oder Konfigurationselementen usw.:
$data = ["apple", "", null, 0, "banana", false];
$filtered = array_filter($data);
print_r($filtered);
Ausgangsergebnis:
Array
(
[0] => apple
[4] => banana
)
Wenn keine Rückruffunktion übergeben wird, wird Array_filter () standardmäßig "Falschwert" entfernen.
Zum Beispiel halten wir Strings nur mit einer Länge von mehr als 5 im Array:
$words = ["apple", "strawberry", "banana", "kiwi"];
$filtered = array_filter($words, function($word) {
return strlen($word) > 5;
});
print_r($filtered);
Ausgabe:
Array
(
[1] => strawberry
[2] => banana
)
Ab PHP 7.4 können Sie den Filterinhalt über den dritten Parameter $ -Modus steuern:
$data = [
'a' => 100,
'b' => 200,
'x' => 300,
];
$filtered = array_filter($data, function($key) {
return $key === 'x';
}, ARRAY_FILTER_USE_KEY);
print_r($filtered);
Ausgabe:
Array
(
[x] => 300
)
$_POST = [
'username' => 'alice',
'email' => '',
'age' => null,
];
$clean_data = array_filter($_POST);
Dies kann schnell Nullfelder entfernen und nur gültige Daten werden erhalten.
$users = [
['name' => 'Tom', 'active' => true],
['name' => 'Jerry', 'active' => false],
['name' => 'Spike', 'active' => true],
];
$active_users = array_filter($users, function($user) {
return $user['active'];
});
print_r($active_users);
$urls = [
'https://m66.net/home',
'invalid-url',
'http://m66.net/contact',
'',
];
$valid_urls = array_filter($urls, function($url) {
return filter_var($url, FILTER_VALIDATE_URL);
});
print_r($valid_urls);
Nach Verwendung von Array_filter () wird der Schlüsselname des ursprünglichen Arrays nicht zurückgesetzt (wenn Sie es zurücksetzen müssen, können Sie ihn mit Array_Values () verwenden).
Wenn Sie nach Keyname filtern müssen, stellen Sie sicher, dass PHP -Version> = 7.4 array_filter_use_key verwendet werden.
Die Rückruffunktion sollte True oder False zurückgeben, um festzustellen, ob das Element beibehalten wird.