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.

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.