In der PHP -Entwicklung sind Array -Operationen die häufigste Verbindung in der täglichen Arbeit. Wir machen fast jeden Tag "Reinigungsarrays". Unabhängig davon, ob die von Benutzern eingereichten Formulardaten oder die Reinigung von Daten, die von Schnittstellen zurückgegeben werden, ist einer der häufigsten Anforderungen.
Glücklicherweise bietet PHP eine sehr elegante Methode: Array_Filter () . In diesem Artikel wird Sie in das tiefe Verständnis der Verwendung dieser Funktion einfließen und einige praktische Tipps weitergeben, mit denen Sie leere Elemente in einem Array effizient und flexibel filtern können.
Das Standardverhalten von PHP Array_filter () besteht darin, Elemente mit dem Wert "False" im Array zu entfernen, einschließlich:
Leere Zeichenfolge ''
Nummer 0 und Zeichenfolge '0'
NULL
FALSCH
Leeres Array []
Schauen wir uns das einfachste Beispiel an:
$data = ['apple', '', null, 'banana', 0, '0', false];
$filtered = array_filter($data);
print_r($filtered);
Das Ausgangsergebnis ist:
Array
(
[0] => apple
[3] => banana
)
Sie werden feststellen, dass Array_Filter () alle Werte, die standardmäßig wie kein Inhalt aussehen, entfernt. Diese Verwendung ist für die meisten Szenarien gut genug.
Wenn Sie nicht möchten, dass '0' oder 0 herausgefiltert wird, können Sie eine Rückruffunktion anpassen. Lassen Sie Array_filter () nur Werte herausfiltern, von denen Sie wirklich, dass sie "leer" sind, wie null oder '' .
$data = ['title' => '', 'price' => 0, 'available' => false, 'sku' => '0', 'description' => null];
$filtered = array_filter($data, function($value) {
return !is_null($value) && $value !== '';
});
print_r($filtered);
Ausgabe:
Array
(
[price] => 0
[available] =>
[sku] => 0
)
Diese Methode eignet sich besonders für die Verarbeitung von Datenformaten oder Konfigurationselementen für Benutzer und löscht nicht versehentlich aussagekräftige "Nullwerte".
Angenommen, Sie möchten die vom Benutzer eingegebenen Daten über eine Postanforderung an eine API senden. Wir möchten den Nullwert nicht übergeben:
$formData = [
'name' => 'Zhang San',
'email' => '',
'phone' => null,
'age' => 25
];
$cleanData = array_filter($formData, function($val) {
return !is_null($val) && $val !== '';
});
$apiUrl = 'https://api.m66.net/user/submit';
$options = [
'http' => [
'header' => "Content-type: application/x-www-form-urlencoded\r\n",
'method' => 'POST',
'content' => http_build_query($cleanData),
]
];
$context = stream_context_create($options);
$result = file_get_contents($apiUrl, false, $context);
echo $result;
Auf diese Weise senden wir nur gültige Daten, um zu vermeiden, dass die API eine Reihe von nutzlosen Feldern empfängt.
Wenn Ihr Array mehrdimensional ist, z. B. ein verschachteltes Formular, das vom Frontend eingereicht wurde, müssen Sie es rekursiv reinigen:
function recursive_filter(array $input) {
foreach ($input as $key => &$value) {
if (is_array($value)) {
$value = recursive_filter($value);
}
}
return array_filter($input, function($val) {
return $val !== '' && !is_null($val);
});
}
$data = [
'user' => [
'name' => 'Li Si',
'email' => '',
'tags' => ['', null, 'developer']
],
'status' => null
];
$cleaned = recursive_filter($data);
print_r($cleaned);
Nach der Verarbeitung auf diese Weise ist Ihr Array sauber und verpasst keine leeren Werte oder löscht gültige Inhalte falsch.
Durch den obigen Fall können wir sehen:
Das Standardverhalten von array_filter () ist bereits sehr leistungsstark und entfernt schnell verschiedene "falsche Werte".
Mit benutzerdefinierten Rückrufe können Sie genau steuern, was Filter ist.
Wenn Sie mit komplexen Strukturen umgehen, kann es leicht auf rekursive Weise behandelt werden.
In der tatsächlichen Entwicklung kann es verwendet werden, um Daten, Schnittstellenanforderungen Parameter und sogar Datenfilterung vor dem Schreiben der Datenbank zu reinigen.
Kurz gesagt, je geschickter Sie diese Funktion verwenden, desto sauberer wird Ihre Daten und je eleganter Ihr Code sein!