Longueur de tableau PHP : count() et sizeof()
La longueur d’un tableau PHP correspond au nombre d’éléments qu’il contient, et count() est la méthode standard pour l’obtenir. Pour compter les éléments d’un tableau PHP, appelez count($array) (ou sizeof($array), qui est la même fonction). count() renvoie le nombre d’éléments du premier niveau pour les tableaux indexés comme associatifs. Pour les structures imbriquées, COUNT_RECURSIVE compte aussi les sous-tableaux, utilisez-le seulement quand ce comportement correspond à votre besoin.
Exemple de longueur de tableau PHP pour compter les éléments
Sortie :
La sortie apparaîtra ici...
Sortie :
3
Comment cet exemple fonctionne
$couleurscontient un tableau indexé avec trois chaînes de caractères.count($couleurs)renvoie3, soit le nombre total d’éléments de premier niveau. Cela fonctionne de la même manière pour les tableaux associatifs :count()compte les clés, pas les valeurs.- Un tableau vide renvoie
0, donccount()peut aussi servir de vérification de vide en le comparant à zéro.
Comment obtenir la longueur d’un tableau en PHP
PHP n’a pas de propriété .length sur les tableaux. La fonction count() est la façon standard d’obtenir la longueur d’un tableau PHP, et elle fonctionne aussi sur les objets qui implémentent Countable. Elle renvoie toujours un int. En PHP 8.0+, appeler count() sur une valeur non dénombrable déclenche une TypeError, donc protégez l’appel avec is_countable() quand la valeur n’est pas garantie d’être un tableau.
Erreurs courantes avec PHP count()
Utiliser strlen() au lieu de count()
Incorrect :
$elements = ["a", "b", "c"];
echo strlen($elements); // TypeError en PHP 8+
Correct :
echo count($elements); // 3
strlen() mesure la longueur en octets d’une chaîne, pas le nombre d’éléments d’un tableau.
Appeler count() sur des valeurs non dénombrables
Incorrect :
$peutEtreTableau = "abc";
echo count($peutEtreTableau); // TypeError en PHP 8+
Correct :
$longueur = is_countable($peutEtreTableau) ? count($peutEtreTableau) : 0;
echo $longueur;
Si une valeur peut être scalaire ou null, vérifiez is_countable() avant de compter.
count() vs sizeof() en PHP
count() | sizeof() |
|---|---|
| Fonction canonique documentée dans le manuel PHP. | Alias de count() : comportement et performances identiques. |
| Universellement reconnue dans les bases de code PHP. | Peut troubler les développeurs C/C++ où sizeof renvoie une taille en octets. |
Préférez count() dans tout nouveau code. sizeof() existe pour la compatibilité mais n’apporte aucune valeur et peut induire en erreur les lecteurs venant d’autres langages.
COUNT_NORMAL vs COUNT_RECURSIVE
$groupes = ["fruits" => ["pomme", "poire"], "couleurs" => ["rouge"]];
echo count($groupes); // 2 (clés de premier niveau)
echo count($groupes, COUNT_RECURSIVE); // 5 (2 clés + 3 valeurs)
COUNT_NORMAL (par défaut, valeur 0) compte uniquement les éléments de premier niveau. COUNT_RECURSIVE (valeur 1) parcourt tous les tableaux imbriqués et ajoute leurs éléments au total. Les tableaux avec références circulaires déclenchent un avertissement pendant un comptage récursif.
Utilisez COUNT_RECURSIVE seulement quand compter les sous-tableaux comme éléments a du sens pour votre cas d’usage, il ne renvoie pas un compte des seules valeurs feuilles.
FAQ
Comment obtenir la longueur d’un tableau en PHP ?
Appelez count($array) pour obtenir le nombre d’éléments. Cela fonctionne avec les tableaux indexés, les tableaux associatifs et les objets qui implémentent Countable. Un tableau vide renvoie 0.
count() fonctionne-t-il avec les tableaux associatifs ?
Oui. count() compte les clés, qu’elles soient numériques ou textuelles. count(["a" => 1, "b" => 2]) renvoie 2.
Que se passe-t-il si vous passez une valeur non-tableau à count() en PHP 8 ?
PHP 8.0+ déclenche une TypeError pour les valeurs non dénombrables comme les chaînes, les entiers, null ou les objets ordinaires. En PHP 7.2+, cela émettait un avertissement et renvoyait 1 pour les scalaires (et 0 pour null), ce qui pouvait masquer des bugs.