Comment vérifier si un tableau est vide en PHP ? Guide complet avec exemples
\n\nBonjour, collègue développeur ! Si tu as déjà écrit du code en PHP, tu as sûrement été confronté à une situation où tu dois savoir : y a-t-il quelque chose dans le tableau, ou est-il vide, comme la poche d'un étudiant après les examens ? Cette tâche semble triviale, mais elle cache plusieurs pièges. Surtout pour les débutants, qui peuvent accidentellement "planter" le script à cause d'une vérification incorrecte.
\n\nAujourd'hui, nous allons analyser toutes les méthodes populaires pour vérifier un tableau vide en PHP, des plus simples aux plus professionnelles. Tu découvriras en quoi empty() diffère de isset(), pourquoi count() peut être dangereux, et comment écrire un code parfait. C'est parti !
Pourquoi est-ce important ? Erreurs typiques des débutants
\n\nImagine : tu reçois des données d'un utilisateur (par exemple, une liste d'articles dans un panier). Si le tableau est vide, tu dois afficher un message "Panier vide". S'il n'est pas vide, tu affiches les articles. Une logique apparemment simple. Mais voici ce que les débutants écrivent souvent :
\n\n// Erreur n°1 : comparaison avec false\nif ($cart == false) {\n echo "Panier vide";\n}\n\n// Erreur n°2 : conversion implicite de type\nif ($cart) {\n // Ce code s'exécute si le tableau n'est pas vide\n}\n\nCela semble fonctionner ? Oui, mais seulement dans les cas simples. Et si le tableau a des clés, mais que toutes les valeurs sont null ou des chaînes vides ? Ou si la variable n'est même pas définie ? C'est là que les bugs commencent. Pour les éviter, analysons la vérification d'un tableau vide en PHP de manière approfondie.
Méthode n°1 : La fonction empty() — la plus populaire
\n\nC'est la première chose qui vient à l'esprit. La fonction empty() en PHP retourne true si la variable est vide. Pour un tableau, cela signifie : le tableau n'existe pas, est égal à null, ou ne contient aucun élément.
<?php\n$emptyArray = [];\n$nonEmptyArray = ['pomme', 'banane'];\n\nvar_dump(empty($emptyArray)); // true\nvar_dump(empty($nonEmptyArray)); // false\n?>\n\nAvantages : court, lisible, fonctionne pour les variables non définies (ne génère pas de warning).
\n\nInconvénients : empty() considère également comme vides 0, '0', '', false, null et un objet SimpleXMLElement vide. Si ton tableau contient, par exemple, un seul élément avec la valeur 0 — empty() dira qu'il est vide. Et ce n'est pas toujours ce que tu veux.
<?php\n$trickyArray = [0];\nvar_dump(empty($trickyArray)); // true ! Pourtant, il y a un élément\n?>\n\nConclusion : utilise empty() uniquement lorsque tu es absolument sûr que le tableau ne contiendra pas de valeurs "fausses" (0, chaîne vide, etc.). Pour la plupart des tâches avec des formulaires et des saisies utilisateur, c'est une excellente option.
Méthode n°2 : La fonction count() — un comptage précis
\n\nLa deuxième méthode la plus populaire est la vérification de la vacuité d'un tableau avec count(). Cette fonction retourne le nombre d'éléments dans le tableau.
\n\n<?php\n$array1 = [];\n$array2 = ['a' => 1, 'b' => 2];\n\nif (count($array1) === 0) {\n echo "Le tableau est vide";\n}\n\nif (count($array2) > 0) {\n echo "Le tableau n'est pas vide, il contient " . count($array2) . " éléments";\n}\n?>\n\nAvantages : résultat absolument précis. Si count() retourne 0 — il n'y a aucun élément dans le tableau. Aucune surprise avec les valeurs fausses.
\n\nInconvénients : pour les très grands tableaux, count() peut être plus lent que empty() (bien que la différence soit généralement négligeable). Il faut aussi être prudent : si la variable n'est pas définie, count() génère un warning. Utilise la vérification isset() ou @count() (mais supprimer les erreurs est une mauvaise pratique).
Meilleure pratique : combine avec isset() :
<?php\nif (isset($array) && count($array)