Position actuelle: Accueil> Derniers articles> Comment filtrer les valeurs nulles dans un tableau à l'aide d'Array_Filter ()

Comment filtrer les valeurs nulles dans un tableau à l'aide d'Array_Filter ()

M66 2025-06-05

Dans le développement de PHP, les opérations de réseaux sont le lien le plus courant du travail quotidien. Nous faisons des «tableaux de nettoyage» presque tous les jours. Qu'il s'agisse de traiter les données du formulaire soumis par les utilisateurs ou de nettoyer les données renvoyées par les interfaces, l'un des besoins les plus courants est.

Heureusement, PHP fournit une méthode très élégante: array_filter () . Cet article vous emmènera dans la compréhension approfondie de l'utilisation de cette fonction et partagera quelques conseils pratiques pour vous aider à filtrer les éléments vides dans un tableau efficacement et de manière flexible.

Utilisation de base: une ligne de code, propre et soignée

Le comportement par défaut de php array_filter () consiste à supprimer les éléments avec la valeur "false" dans le tableau, y compris:

  • Chaîne vide ''

  • Numéro 0 et String '0'

  • nul

  • FAUX

  • Array vide []

Jetons un coup d'œil à l'exemple le plus simple:

 $data = ['apple', '', null, 'banana', 0, '0', false];

$filtered = array_filter($data);

print_r($filtered);

Le résultat de la sortie est:

 Array
(
    [0] => apple
    [3] => banana
)

Vous constaterez que Array_Filter () supprime toutes les valeurs qui "ne ressemble à aucun contenu" par défaut. Cette utilisation est assez bonne pour la plupart des scénarios.

Logique de filtrage personnalisée: filtrez plus précisément

Si vous ne voulez pas que '0' ou 0 soit filtré, vous pouvez personnaliser une fonction de rappel, laissez Array_Filter () filtrez les valeurs que vous pensez vraiment être "vides", comme null ou '' .

 $data = ['title' => '', 'price' => 0, 'available' => false, 'sku' => '0', 'description' => null];

$filtered = array_filter($data, function($value) {
    return !is_null($value) && $value !== '';
});

print_r($filtered);

Sortir:

 Array
(
    [price] => 0
    [available] => 
    [sku] => 0
)

Cette méthode est particulièrement adaptée au traitement des données du formulaire utilisateur ou des éléments de configuration, et ne supprimera pas accidentellement des "valeurs zéro" significatives.

Cas de la demande: nettoyez les données du formulaire, puis soumettez-les

Supposons que vous souhaitiez envoyer les données saisies par l'utilisateur à une API via une demande de poste, nous ne voulons pas passer la valeur nul:

 $formData = [
    'name' => 'Zhang San',
    'email' => '',
    'phone' => null,
    'age' => 25
];

$cleanData = array_filter($formData, function($val) {
    return !is_null($val) && $val !== '';
});

$apiUrl = 'https://api.m66.net/user/submit';

$options = [
    'http' => [
        'header'  => "Content-type: application/x-www-form-urlencoded\r\n",
        'method'  => 'POST',
        'content' => http_build_query($cleanData),
    ]
];

$context  = stream_context_create($options);
$result = file_get_contents($apiUrl, false, $context);

echo $result;

De cette façon, nous n'envoyons que des données valides pour éviter de laisser l'API recevoir un tas de champs inutiles.

Conseils: filtrez récursivement les tableaux multidimensionnels

Si votre tableau est multidimensionnel, comme un formulaire imbriqué soumis à l'avant, vous devez le nettoyer récursivement:

 function recursive_filter(array $input) {
    foreach ($input as $key => &$value) {
        if (is_array($value)) {
            $value = recursive_filter($value);
        }
    }
    return array_filter($input, function($val) {
        return $val !== '' && !is_null($val);
    });
}

$data = [
    'user' => [
        'name' => 'Li si',
        'email' => '',
        'tags' => ['', null, 'developer']
    ],
    'status' => null
];

$cleaned = recursive_filter($data);

print_r($cleaned);

Après le traitement de cette façon, votre tableau sera propre et ne manquera pas les valeurs vides ou ne supprimera pas mal le contenu valide.

Résumé: array_filter () est votre bonne aide pour le traitement des données

Dans le cas ci-dessus, nous pouvons voir:

  • Le comportement par défaut de Array_Filter () est déjà très puissant, supprimant rapidement diverses "fausses valeurs".

  • Avec des rappels personnalisés, vous pouvez contrôler précisément quoi filtrer.

  • Lorsqu'il s'agit de structures complexes, il peut être facilement traité de manière récursive.

  • Dans le développement réel, il peut être utilisé pour nettoyer les données du formulaire, les paramètres de demande d'interface et même le filtrage des données avant l'écriture de la base de données.

En bref, plus vous utilisez cette fonction, plus vos données seront propres et plus votre code sera élégant!