Dans le développement de PHP, nous rencontrons souvent la nécessité de filtrer des types spécifiques de données à partir d'un éventail de types mixtes, comme ce dont nous allons parler aujourd'hui:. À l'heure actuelle, Array_Filter () est utile.
Array_Filter () est l'une des fonctions de tableau intégrées en PHP, principalement utilisées pour filtrer les éléments dans les tableaux. Il accepte un tableau et une fonction de rappel (facultatif), renvoyant un nouveau tableau d'éléments qui renvoient True .
array_filter(array $array, ?callable $callback = null, int $mode = 0): array
$ Array : Le tableau à filtrer.
Rappel $ : fonction définie par l'utilisateur pour tester chaque élément du tableau.
MODE $ : Paramètre facultatif pour spécifier si le paramètre de la fonction de rappel est une clé, une valeur ou les deux.
Voici un exemple de tableau contenant plusieurs types d'éléments:
$data = [
"apple",
42,
"banana",
true,
"cherry",
null,
3.14,
["nested", "array"],
(object) ["name" => "grape"]
];
Notre objectif est de filtrer toutes les valeurs non corrigées et de ne préserver que des éléments de chaîne .
$filtered = array_filter($data, 'is_string');
print_r($filtered);
Array
(
[0] => apple
[2] => banana
[4] => cherry
)
Notez que Array_Filter () conserve le nom de clé du tableau d'origine. Si vous voulez que le résultat soit un tableau réindexé, vous pouvez utiliser array_values () :
$filtered = array_values(array_filter($data, 'is_string'));
Si vous souhaitez étendre la logique, comme ne conservant que des chaînes avec des longueurs supérieures à 5, vous pouvez écrire ceci:
$filtered = array_filter($data, function($item) {
return is_string($item) && strlen($item) > 5;
});
print_r($filtered);
Supposons que vous deviez extraire les informations de chaîne remplies par l'utilisateur lors du traitement d'un tableau de données de formulaire:
$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
)
De cette façon, vous ne pouvez traiter que des données de type texte, par exemple pour l'envoi de courriels ou la création de requêtes de base de données.
L'utilisation de Array_Filter () avec is_string () peut être utilisée pour filtrer tous les éléments de chaîne à partir d'un tableau mixte très commodément. Cette méthode est simple et efficace, et convient très pour le nettoyage et le traitement des données de réseau dans le développement quotidien de PHP.