Position actuelle: Accueil> Derniers articles> Comment filtrer tous les éléments non-cordes dans un tableau à l'aide de la fonction Array_Filter de PHP?

Comment filtrer tous les éléments non-cordes dans un tableau à l'aide de la fonction Array_Filter de PHP?

M66 2025-07-18

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.

Qu'est-ce que Array_Filter () ?

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.

Application pratique: Filtrez des éléments non-cordes

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 .

Méthode 1: Utiliser IS_String comme fonction de rappel

 $filtered = array_filter($data, 'is_string');

print_r($filtered);

Résultat de sortie:

 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'));

Méthode 2: Utilisez des fonctions anonymes pour obtenir des jugements plus complexes

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);

Application de scène réelle

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);

Résultat de sortie:

 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.

Résumer

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.