In PHP ist filter_var_array eine sehr praktische Funktion zum Filtern und Validieren von Daten in einem Array. Viele Entwickler werden auf eine Frage stoßen: Kann filter_var_array mehrdimensionale Arrays filter_var_array handeln? In diesem Artikel wird diese Frage ausführlich beantwortet und seine Verwendung und Vorsichtsmaßnahmen vorgestellt.
Die Funktion filter_var_array kann angegebene Filter auf jedes Element eines Arrays anwenden und wird häufig verwendet, um Benutzereingabedaten wie $ _get, $ _post oder $ _cookie -Arrays zu verarbeiten. Die grundlegende Verwendung ist wie folgt:
<?php
$data = [
'email' => '[email protected]',
'age' => '25',
];
$filters = [
'email' => FILTER_VALIDATE_EMAIL,
'age' => [
'filter' => FILTER_VALIDATE_INT,
'options' => ['min_range' => 18, 'max_range' => 65]
],
];
$result = filter_var_array($data, $filters);
var_dump($result);
?>
Der obige Code überprüft, ob das Mailbox gültig ist, und prüft, ob das Alter zwischen 18 und 65 liegt.
Standardmäßig verarbeitet Filter_var_Array nur eindimensionale Arrays, dh es wird nur über die erste Schicht des Arrays iteriert und die Filterregeln für jedes Schlüsselwertpaar angewendet. Bei mehrdimensionalen Arrays verarbeitet es keine inneren Schicht -Arrays rekursiv.
Zum Beispiel:
<?php
$data = [
'user' => [
'email' => '[email protected]',
'age' => '25',
],
'status' => 'active'
];
$filters = [
'user' => FILTER_DEFAULT, // Hier ist richtig"user"Entspricht einem Array,Standardmäßig werden die internen Elemente nicht gefiltert
'status' => FILTER_SANITIZE_STRING,
];
$result = filter_var_array($data, $filters);
var_dump($result);
?>
Im Ergebnis wird das Array, das dem Benutzer entspricht, so zurückgegeben und wird nicht gefiltert.
Wenn Sie mehrdimensionale Arrays filtern müssen, kann filter_var_array selbst rekursive Operationen nicht direkt unterstützen. Eine übliche Praxis besteht darin, eine rekursive Funktion zu schreiben, ein mehrdimensionales Array durchzusetzen, filter_var_array für jede Ebene aufzurufen oder Filter_var zu verwenden.
Beispielcode:
<?php
function recursive_filter_var_array(array $data, array $filters) {
$result = [];
foreach ($filters as $key => $filter) {
if (is_array($filter) && isset($data[$key]) && is_array($data[$key])) {
// Rekursiv mehrdimensionale Arrays verarbeiten
$result[$key] = recursive_filter_var_array($data[$key], $filter);
} elseif (isset($data[$key])) {
// Filter einzelner Elemente
if (is_array($filter)) {
$result[$key] = filter_var($data[$key], $filter['filter'], $filter['options'] ?? []);
} else {
$result[$key] = filter_var($data[$key], $filter);
}
}
}
return $result;
}
// Beispieldaten und Filterregeln
$data = [
'user' => [
'email' => '[email protected]',
'age' => '30',
],
'status' => 'active<script>',
];
$filters = [
'user' => [
'email' => FILTER_VALIDATE_EMAIL,
'age' => [
'filter' => FILTER_VALIDATE_INT,
'options' => ['min_range' => 18, 'max_range' => 65],
],
],
'status' => FILTER_SANITIZE_STRING,
];
$result = recursive_filter_var_array($data, $filters);
var_dump($result);
?>
Durch diese rekursive Funktion können Sie multidimensionale Arrays flexibel verarbeiten und Daten hierarchisch filtern.
Die Filterregeln und die Array -Struktur müssen <br> entsprechen Die Struktur des Filterregel -Arrays muss mit der Struktur des gefilterten Arrays übereinstimmen, andernfalls verursacht es Filterfehler oder Datenverlust.
filter_var_array unterstützt keine Rekursion <br> Standardmäßig werden nur eindimensionale Arrays verarbeitet, und Sie müssen selbst rekursive Funktionen schreiben, um die mehrdimensionale Filterung zu implementieren.
Angemessene Filterauswahl <br> Wählen Sie den entsprechenden Filter gemäß dem Datentyp aus, z.
Optionskonfiguration <br> Optionen können für Filter wie Bereichsgrenzen, Standardwerte usw. festgelegt werden, um die Flexibilität und Sicherheit der Filterung zu verbessern.
filter_var_array ist ein leistungsstarkes Array-Filterwerkzeug in PHP, unterstützt jedoch nur eindimensionale Arrays. Wenn Sie sich mit mehrdimensionalen Arrays befassen möchten, wird empfohlen, die rekursive Filterfunktion selbst zu implementieren. Durch rationales Entwerfen von Filterregeln und -strukturen können die Sicherheit und die Wirksamkeit der Daten effektiv garantiert werden.
Weitere Tipps und Beispiele für PHP -bezogene Tipps und Beispiele finden Sie unter https://gitbox.net/php/filter_var_array für Details.