Le filtrage des données de tableau dans PHP est une opération très courante, en particulier lors du traitement des entrées utilisateur, des données de l'API ou des résultats de la base de données. Array_Filter () est une fonction puissante fournie par PHP, qui peut combiner des fonctions anonymes (fermetures) pour réaliser un filtrage de données flexible et efficace. Cet article vous mènera étape par étape pour comprendre comment les utiliser pour implémenter diverses logiques de filtrage.
Array_Filter () est une fonction PHP intégrée qui juge chaque élément dans le tableau via une fonction de rappel (rappel) et renvoie un nouveau tableau composé d'éléments qui remplissent les conditions.
La syntaxe de base est la suivante:
array_filter(array $array, ?callable $callback = null, int $mode = 0): array
$ Array : Le tableau à filtrer.
$ rappel : la fonction de rappel utilisée pour chaque élément. S'il est omis, les éléments avec une valeur de faux seront supprimés par défaut.
MODE $ : Paramètre facultatif pour déterminer s'il faut passer le nom de la clé en tant que paramètre.
Les fonctions anonymes, également appelées fermetures, sont une fonction sans nom en PHP, qui est très adaptée à une utilisation pendant le traitement logique temporaire. La syntaxe est la suivante:
$filterFunc = function($value) {
return $value > 10;
};
Ce type de fonction est généralement utilisé avec array_filter () pour obtenir plus de contrôle des données granulaires.
$numbers = [4, 15, 9, 23, 5];
$filtered = array_filter($numbers, function($value) {
return $value > 10;
});
print_r($filtered);
Sortir:
Array
(
[1] => 15
[3] => 23
)
Vous pouvez voir que seuls les nombres supérieurs à 10 sont conservés.
$formData = [
'name' => 'Alice',
'email' => '',
'age' => null,
'city' => 'Beijing'
];
$cleanData = array_filter($formData, function($value) {
return !empty($value);
});
print_r($cleanData);
Sortir:
Array
(
[name] => Alice
[city] => Beijing
)
$data = [
'user_id' => 101,
'user_name' => 'Bob',
'admin_role' => true,
'timestamp' => 1681920000
];
$filtered = array_filter($data, function($value, $key) {
return str_contains($key, 'user');
}, ARRAY_FILTER_USE_BOTH);
print_r($filtered);
Sortir:
Array
(
[user_id] => 101
[user_name] => Bob
)
Supposons que vous obteniez le tableau suivant à partir d'une source de données (comme https://m66.net/api/posts ):
$posts = [
['title' => 'Hello World', 'url' => 'https://m66.net/post/1', 'published' => true],
['title' => 'Draft Post', 'url' => 'https://m66.net/post/2', 'published' => false],
['title' => 'PHP Tips', 'url' => 'https://m66.net/post/3', 'published' => true],
];
Vous pouvez utiliser array_filter () pour ne garder que des articles publiés:
$publishedPosts = array_filter($posts, function($post) {
return $post['published'] === true;
});
print_r($publishedPosts);
L'utilisation de Array_Filter () combinée avec des fonctions anonymes peut facilement répondre à divers besoins de filtrage de données personnalisés. Qu'il s'agisse de filtrer les valeurs numériques, les chaînes ou les tableaux multidimensionnels, il vous suffit de passer dans une fonction de fermeture appropriée pour le gérer de manière flexible.
suggestion:
Lors du traitement des données des utilisateurs, assurez-vous d'utiliser des filtres pour effacer le contenu indésirable.
Utilisez autant que possible les fonctions anonymes pour améliorer la lisibilité et la modularité du code.
Si vous souhaitez garder le nom de clé cohérent avec le tableau d'origine, vous pouvez l'utiliser avec array_filter_use_both .