In der PHP -Entwicklung begegnen wir häufig auf die Notwendigkeit, bestimmte Arten von Daten aus einer Reihe gemischter Typen herauszufiltern, z. B. das, worüber wir heute sprechen werden:. Zu diesem Zeitpunkt ist Array_filter () nützlich.
Array_Filter () ist eine der integrierten Array-Funktionen in PHP, die hauptsächlich zum Filtern von Elementen in Arrays verwendet wird. Es akzeptiert ein Array und eine Rückruffunktion (optional), wobei ein neues Array von Elementen zurückgegeben wird, die True zurückgeben.
array_filter(array $array, ?callable $callback = null, int $mode = 0): array
$ Array : Das Array zum Filter.
$ Callback : Benutzerdefinierte Funktion zum Testen jedes Elements im Array.
$ modus : Optionaler Parameter Um anzugeben, ob der Parameter der Rückruffunktion ein Schlüssel, ein Wert oder beides ist.
Hier ist ein Beispielarray mit mehreren Arten von Elementen:
$data = [
"apple",
42,
"banana",
true,
"cherry",
null,
3.14,
["nested", "array"],
(object) ["name" => "grape"]
];
Unser Ziel ist es , alle Nicht-String-Werte herauszufiltern und nur Stringelemente zu erhalten .
$filtered = array_filter($data, 'is_string');
print_r($filtered);
Array
(
[0] => apple
[2] => banana
[4] => cherry
)
Beachten Sie, dass Array_Filter () den Schlüsselnamen des ursprünglichen Arrays behält. Wenn Sie möchten, dass sich das Ergebnis um ein redexedes Array handelt, können Sie Array_Values () verwenden:
$filtered = array_values(array_filter($data, 'is_string'));
Wenn Sie die Logik erweitern möchten, z. B. nur Strings mit Längen von mehr als 5, können Sie Folgendes schreiben:
$filtered = array_filter($data, function($item) {
return is_string($item) && strlen($item) > 5;
});
print_r($filtered);
Nehmen wir an, Sie müssen die vom Benutzer ausgefüllten Zeichenfolge extrahieren, wenn Sie ein Array von Formulardaten verarbeiten:
$userInput = [
'username' => 'john_doe',
'age' => 28,
'email' => 'john@example.com',
'newsletter' => true,
'website' => 'https://m66.net/profile/john'
];
$stringsOnly = array_filter($userInput, 'is_string');
print_r($stringsOnly);
Array
(
[username] => john_doe
[email] => john@example.com
[website] => https://m66.net/profile/john
)
Auf diese Weise können Sie nur Daten zum Texttyp verarbeiten, z. B. zum Senden von E-Mails oder zum Erstellen von Datenbankabfragen.
Mit Array_Filter () mit is_string () kann alle Stringelemente aus einem gemischten Array sehr bequem herausgefiltert werden. Diese Methode ist einfach und effizient und für die Reinigung und Verarbeitung von Array -Daten in der täglichen PHP -Entwicklung sehr geeignet.