Supprimer les éléments vides d'un tableau PHP : guide complet

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Introduction : pourquoi les éléments vides dans un tableau sont un casse-tête

\n\n

Tout développeur PHP rencontre tôt ou tard une situation où un tableau censé contenir uniquement des données utiles se retrouve rempli de "déchets" : chaînes vides, valeurs null, false ou zéros. Cela arrive fréquemment lors du traitement de données issues de formulaires, de fichiers CSV, de réponses API ou de saisies utilisateur.

\n\n

Imaginez : vous recevez un tableau de tags d'un utilisateur, et la moitié d'entre eux sont des chaînes vides. Ou vous importez des données depuis Excel, et certaines cellules ne contiennent qu'un espace. Si vous ne nettoyez pas ce tableau, les résultats peuvent être désastreux : requêtes incorrectes en base de données, logique de filtrage cassée, enregistrements superflus dans les rapports.

\n\n

Dans cet article, nous allons voir comment supprimer les éléments vides d'un tableau en PHP de la manière la plus efficace possible. Vous découvrirez non seulement les méthodes de base, mais aussi des techniques avancées : nettoyage récursif, gestion des tableaux multidimensionnels et réglages fins du filtrage. C'est parti !

\n\n

1. Méthode de base : array_filter() — votre outil principal

\n\n

La façon la plus populaire et concise de supprimer les éléments vides d'un tableau PHP est la fonction array_filter(). Par défaut, elle supprime tous les éléments considérés comme "faux" (false) dans un contexte booléen :

\n\n
    \n
  • "" (chaîne vide)
  • \n
  • null
  • \n
  • false
  • \n
  • 0 et "0"
  • \n
  • [] (tableau vide)
  • \n
\n\n
<?php\n$data = ['pomme', '', 'banane', null, 'cerise', false, 0];\n$clean = array_filter($data);\nprint_r($clean);\n// Résultat : Array ( [0] => pomme [2] => banane [4] => cerise )\n?>
\n\n

Notez que les clés du tableau sont conservées. Cela peut poser problème si vous avez besoin d'une numérotation séquentielle. La solution consiste à encapsuler le résultat dans array_values() :

\n\n
<?php\n$clean = array_values(array_filter($data));\nprint_r($clean);\n// Résultat : Array ( [0] => pomme [1] => banane [2] => cerise )\n?>
\n\n

1.1. Réglage fin : supprimer uniquement les chaînes vides tout en conservant les zéros

\n\n

Que faire si vous devez supprimer les chaînes vides d'un tableau PHP mais conserver les nombres, y compris zéro ? array_filter() sans paramètres supprimera aussi les zéros. Utilisons une fonction de callback :

\n\n
<?php\n$data = ['pomme', '', 'banane', 0, 'cerise', '   '];\n$clean = array_filter($data, function($value) {\n    return $value !== '' && $value !== null;\n});\nprint_r($clean);\n// Résultat : Array ( [0] => pomme [2] => banane [3] => 0 [4] => cerise [5] =>    )\n?>
\n\n

Mais les espaces sont toujours là ! Pour les supprimer aussi, utilisez trim() :

\n\n
<?php\n$clean = array_filter($data, function($value) {\n    return trim($value) !== '' && $value !== null;\n});\nprint_r($clean);\n// Résultat : Array ( [0] => pomme [2] => banane [3] => 0 [4] => cerise )\n?>
\n\n

2. Méthodes avancées : array_diff() et array_unique()

\n\n

Parfois, vous devez supprimer les chaînes vides d'un tableau PHP ou des valeurs spécifiques sans utiliser de callback. array_diff(), la fonction de comparaison de tableaux, vient à la rescousse :

\n\n
<?php\n$data = ['pomme', '', 'banane', null, 'cerise', false];\n// Création d'un tableau de "valeurs à exclure"\n$remove = ['', null, false];\n$clean = array_diff($data, $remove);\nprint_r($clean);\n// Résultat : Array ( [0] => pomme [2] => banane [4] => cerise )\n?>
\n\n

L'avantage de cette méthode est sa clarté. Vous indiquez explicitement les valeurs considérées comme "vides". Mais n'oubliez pas : array_diff() ne supprime pas les éléments par leurs clés, mais compare les valeurs.

\n\n

2.1. Suppression des doublons de valeurs vides

\n\n

Si le tableau contient plusieurs valeurs vides identiques,

Blogs

Book Recommendations