Compter un tableau PHP avec count() sans piège

Alfred Jacques .

4 octobre 2026

Exemple de taille d'un tableau PHP : un tableau indexé avec des couleurs, un tableau associatif pour un produit, et un tableau multidimensionnel pour des articles.

Un tableau PHP peut contenir quelques valeurs comme plusieurs milliers d’enregistrements chargés depuis une base de données. Pour connaître rapidement son nombre d’éléments, éviter une boucle mal contrôlée ou vérifier qu’une liste n’est pas vide, la fonction count() reste la solution de référence. Je détaille ici son fonctionnement, ses limites avec les tableaux associatifs et imbriqués, ainsi que les bonnes pratiques à appliquer dans un projet web.

La méthode fiable pour compter les éléments d’un tableau PHP

  • count($tableau) renvoie le nombre d’éléments du premier niveau.
  • La fonction compte les valeurs, pas la plus grande clé numérique.
  • COUNT_RECURSIVE permet d’explorer les tableaux imbriqués, avec prudence.
  • is_countable() évite d’appeler count() sur une variable incompatible.
  • Pour parcourir un tableau, foreach est souvent plus lisible qu’une boucle for.

Exemple de taille d'un tableau PHP : un tableau indexé avec des couleurs, un tableau associatif pour un produit, et un tableau multidimensionnel pour des articles.

La méthode de base avec count()

Pour obtenir la taille d’un tableau en PHP, j’utilise d’abord count(). La fonction reçoit le tableau en argument et renvoie un entier correspondant au nombre d’éléments présents au premier niveau.

Le résultat est 3, car le tableau contient trois valeurs. Cette approche fonctionne aussi bien avec la syntaxe courte [] qu’avec l’ancienne syntaxe array(). Dans un code moderne, je recommande clairement les crochets, plus lisibles et plus rapides à saisir.

Tester si un tableau est vide

Pour savoir si un tableau contient au moins une valeur, deux approches sont courantes. count($tableau) > 0 est explicite, tandis que empty() est plus concise lorsque la variable existe déjà.

Dans ce cas, le choix dépend surtout du contexte. J’emploie count() === 0 quand je veux exprimer précisément une comparaison numérique et empty() lorsqu’il s’agit simplement de vérifier l’absence de contenu.

Le nombre d’éléments ne dépend pas de la dernière clé

Une confusion revient souvent avec les tableaux indexés. Leur taille ne correspond pas forcément à la plus grande clé numérique, car PHP compte les éléments réellement présents.

 15,
    3 => 18,
    8 => 12
];

echo count($notes); // 3
?>

Le résultat vaut 3, même si la dernière clé est 8. Les clés 1, 2, 4, 5, 6 et 7 n’existent pas. Utiliser une expression comme end(array_keys($notes)) + 1 pour déduire le nombre d’éléments serait donc une mauvaise idée dans ce scénario.

La même règle vaut pour un tableau associatif. Les noms des clés n’ont aucune influence sur le total.

 'Camille',
    'email' => 'camille@example.fr',
    'role' => 'éditeur'
];

echo count($utilisateur); // 3
?>

J’insiste sur ce point parce qu’il explique de nombreux bugs dans les traitements de données. count() mesure le nombre de couples clé-valeur, pas une position maximale ni une longueur de chaîne.

Comprendre les tableaux multidimensionnels

Un tableau multidimensionnel contient d’autres tableaux. Par défaut, count() ne compte que les éléments du premier niveau. Il permet donc de connaître le nombre de lignes, mais pas automatiquement le nombre total de cellules.

 'Clavier', 'quantite' => 1],
    ['produit' => 'Souris', 'quantite' => 2],
    ['produit' => 'Écran', 'quantite' => 1]
];

echo count($commandes); // 3
?>

Le tableau contient trois commandes. Chaque commande possède deux champs, mais ces champs ne sont pas ajoutés au résultat par défaut. C’est généralement le comportement recherché lorsqu’on affiche une liste de lignes dans une interface.

Lire aussi : Wix en 2026 - Créez un site pro sans perdre de temps

Compter aussi les sous-tableaux

La constante COUNT_RECURSIVE demande à PHP de parcourir les niveaux imbriqués.

 ['PHP', 'JavaScript'],
    'design' => ['UI', 'UX']
];

echo count($groupes, COUNT_RECURSIVE);
?>

Cette option inclut les valeurs des sous-tableaux et les tableaux rencontrés dans le parcours. Le total obtenu ne représente donc pas forcément le nombre de valeurs métier que vous imaginez. Pour compter précisément les lignes ou les champs, une boucle explicite est souvent plus claire et plus sûre.

Quelle fonction utiliser selon la situation

count() couvre la majorité des besoins, mais toutes les variables ne sont pas nécessairement des tableaux. Dans une application web, une donnée peut venir d’un formulaire, d’une API ou d’une requête SQL et prendre une forme inattendue.

Besoin Solution conseillée Point d’attention
Compter les éléments d’un tableau count($tableau) Compte le premier niveau
Compter les niveaux imbriqués count($tableau, COUNT_RECURSIVE) Le résultat peut inclure les sous-tableaux
Vérifier qu’une liste est vide empty($tableau) Retourne aussi vrai pour certaines valeurs considérées comme vides
Accepter un tableau ou un objet comptable is_countable($variable) Disponible dans les versions modernes de PHP
Ancien code utilisant sizeof() sizeof($tableau) Alias de count(), mais moins explicite

Depuis PHP 7.3, is_countable() permet de vérifier proprement qu’une variable peut être passée à count().

Ce contrôle est utile lorsque la source n’est pas totalement maîtrisée. Avec une valeur incompatible, appeler directement count() peut produire un avertissement ou une erreur selon la version de PHP. Dans un projet récent, je préfère donc valider le type lorsque la donnée vient de l’extérieur.

Utiliser la taille dans une boucle sans créer de bug

La taille du tableau sert souvent à contrôler une boucle for. Le code fonctionne, mais il est préférable de calculer le nombre d’éléments avant la boucle plutôt qu’à chaque itération, surtout si le traitement devient plus complexe.

';
}
?>

Pour une simple lecture, foreach reste généralement plus lisible et évite les erreurs d’indice.

';
}
?>

Je réserve la boucle for aux situations où l’indice est réellement utile, par exemple pour comparer une valeur avec sa précédente ou modifier une position précise. Pour afficher une liste, foreach est le choix le plus naturel.

Avec un tableau associatif, foreach permet aussi de récupérer la clé et la valeur sans supposer que les indices commencent à zéro.

 49.90,
    'souris' => 24.90
];

foreach ($prix as $produit => $montant) {
    echo $produit . ' : ' . $montant . ' €
'; } ?>

Le bon réflexe avant de compter un tableau PHP

Dans la plupart des cas, la réponse tient en une ligne avec count($tableau). Il faut simplement savoir ce que l’on compte réellement, car un tableau associatif, un tableau aux indices discontinus et une structure imbriquée ne se comportent pas de la même manière à la lecture.

Mon conseil est simple. Utilisez count() pour mesurer un niveau précis, COUNT_RECURSIVE seulement lorsque le parcours complet est voulu, et foreach dès que l’objectif consiste à parcourir les valeurs. Ces trois réflexes couvrent l’essentiel des besoins courants en développement PHP.

Questions fréquentes

La fonction compte les éléments réellement présents au premier niveau, et non la plus grande clé numérique. Ainsi, un tableau contenant les clés 0, 3 et 8 renvoie 3 avec count($tableau).
Par défaut, count() compte uniquement les éléments du premier niveau, par exemple le nombre de lignes d’une liste de commandes. L’option COUNT_RECURSIVE parcourt aussi les sous-tableaux, mais son total peut inclure les tableaux rencontrés et ne pas correspondre au nombre de valeurs métier attendu.
Utilisez is_countable() lorsque la variable peut provenir d’un formulaire, d’une API ou d’une requête SQL et ne pas être un tableau. Disponible depuis PHP 7.3, cette vérification permet d’éviter un avertissement ou une erreur sur une valeur incompatible.
Pour afficher ou lire les valeurs, foreach est généralement plus lisible et évite les erreurs d’indice, notamment avec un tableau associatif. Une boucle for reste utile lorsque l’indice est nécessaire, mais il est préférable de calculer count() avant la boucle.
Évaluer l'article

Moyenne: 0.0 / 5 · 0 évaluations

Tags

tableaux foreach count() tableaux associatifs tableaux multidimensionnels
Autor Alfred Jacques
Alfred Jacques
Je m'appelle Alfred Jacques et j'ai accumulé 12 ans d'expérience dans le domaine des technologies, en particulier dans les secteurs du web, de l'intelligence artificielle, des réseaux et de la sécurité. Mon intérêt pour ces sujets a débuté dès mon adolescence, lorsque j'ai découvert les possibilités infinies qu'offrent les nouvelles technologies. J'aime explorer les enjeux complexes de ces domaines et partager des informations claires et accessibles pour aider mes lecteurs à mieux comprendre les défis et les évolutions technologiques. Dans mes écrits, je m'efforce de fournir des analyses précises et à jour, en vérifiant mes sources et en comparant différentes perspectives. Je m'engage à simplifier des concepts parfois difficiles afin de rendre l'information utile et compréhensible pour tous. Que ce soit en suivant les dernières tendances ou en organisant mes connaissances de manière claire, je souhaite que mes articles soient une ressource précieuse pour ceux qui s'intéressent à la technologie et à ses implications dans notre quotidien.
Commentaires (0)
Ajouter un commentaire