Dans le développement de PHP, les tableaux sont des structures de données très couramment utilisées. Lorsque vous opérez des baies, nous devons souvent filtrer le tableau, tels que la suppression des valeurs nuls, le conservation des éléments qui remplissent certaines conditions, etc. La fonction Array_Filter () est un outil très pratique conçu spécifiquement pour cela.
Cet article expliquera en détail l'utilisation de base de Array_Filter () , la signification des paramètres et certains scénarios d'utilisation courants, pour vous aider à maîtriser rapidement l'application pratique de cette fonction.
Array_Filter () est l'une des fonctions intégrées de PHP. Son objectif est d'utiliser une fonction de rappel pour filtrer chaque élément du tableau, ne laissant que les éléments avec la valeur de retour true . Sa syntaxe est la suivante:
array_filter(array $array, ?callable $callback = null, int $mode = 0): array
$ Array : Le tableau d'origine à filtrer.
$ callback (facultatif): une fonction de rappel utilisée pour déterminer si un élément est conservé. Si null , les valeurs de suppression par défaut sont fausses , null , vide string '' , numéro 0, array vide [] et autres "fausses valeurs".
$ mode (php 7.4+): Spécifie si le contenu transmis à la fonction de rappel est une paire de valeur, de clé ou de valeur clé.
Il s'agit de la façon la plus courante de l'utiliser, adaptée au nettoyage des données de formulaire ou des éléments de configuration, etc .:
$data = ["apple", "", null, 0, "banana", false];
$filtered = array_filter($data);
print_r($filtered);
Résultat de sortie:
Array
(
[0] => apple
[4] => banana
)
Lorsqu'aucune fonction de rappel n'est passée, array_filter () supprimera "False Value" par défaut.
Par exemple, nous ne gardons que des chaînes avec une longueur supérieure à 5 dans le tableau:
$words = ["apple", "strawberry", "banana", "kiwi"];
$filtered = array_filter($words, function($word) {
return strlen($word) > 5;
});
print_r($filtered);
Sortir:
Array
(
[1] => strawberry
[2] => banana
)
À partir de PHP 7.4, vous pouvez contrôler le contenu de filtrage via le troisième paramètre $ mode :
$data = [
'a' => 100,
'b' => 200,
'x' => 300,
];
$filtered = array_filter($data, function($key) {
return $key === 'x';
}, ARRAY_FILTER_USE_KEY);
print_r($filtered);
Sortir:
Array
(
[x] => 300
)
$_POST = [
'username' => 'alice',
'email' => '',
'age' => null,
];
$clean_data = array_filter($_POST);
Cela peut rapidement supprimer les champs nuls et que seules les données valides sont conservées.
$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);
Après avoir utilisé array_filter () , le nom de clé du tableau d'origine ne sera pas réinitialisé (si vous devez le réinitialiser, vous pouvez l'utiliser avec array_values () ).
Si vous devez filtrer par KeyName, assurez-vous que PHP version> = 7.4 et utilisez Array_Filter_Use_Key .
La fonction de rappel doit renvoyer True ou False pour déterminer si l'élément est conservé.