is_countable()
La fonction is_countable() est une fonction intégrée de PHP qui vérifie si une variable est dénombrable. Elle a été introduite dans PHP 7.3 comme construction du langage.
Introduction
La fonction is_countable() est une fonction intégrée de PHP qui vérifie si une variable est dénombrable — c'est-à-dire si elle peut être passée en toute sécurité à count(). Une valeur est dénombrable lorsqu'elle est un tableau ou un objet qui implémente l'interface Countable. La fonction retourne true pour ces deux cas et false pour tout le reste.
Elle a été introduite dans PHP 7.3 pour résoudre un problème concret. À partir de PHP 7.2, appeler count() sur une valeur qui n'est ni un tableau ni un objet Countable émet un avertissement (et dans PHP 8.0, cela est devenu une TypeError). Avant l'existence de is_countable(), il fallait écrire is_array($x) || $x instanceof Countable manuellement pour s'en prémunir. Cette fonction fait de cette vérification un appel unique et lisible.
Cette page couvre la syntaxe, la valeur de retour, un exemple concret, le modèle courant de "comptage sécurisé" et les pièges à éviter.
Syntaxe
La syntaxe de la fonction is_countable() est la suivante :
La syntaxe PHP de is_countable()
mixed is_countable(mixed $var)Remarque : l'indication de type mixed nécessite PHP 8.0+. En PHP 7.3, la signature est simplement is_countable($var).
La fonction prend un seul paramètre, $var, la variable à vérifier.
Valeur de retour
is_countable() retourne toujours un booléen et ne lève jamais d'erreur, quelle que soit la valeur passée :
$var | Retourne |
|---|---|
Tableau (ex. [1, 2, 3] ou []) | true |
Objet implémentant Countable | true |
| string, integer, float, boolean | false |
null | false |
Objet simple (ex. new stdClass()) | false |
Le tableau vide [] est toujours dénombrable — être dénombrable concerne le type, pas le fait que la valeur contienne des éléments.
Exemple d'utilisation
Voici un exemple d'utilisation de la fonction is_countable() en PHP :
Exemple de is_countable() en PHP
<?php
$var1 = ["apple", "banana", "orange"];
$var2 = "hello";
$var3 = new stdClass();
$var4 = 42;
var_dump(is_countable($var1)); // output: bool(true)
var_dump(is_countable($var2)); // output: bool(false)
var_dump(is_countable($var3)); // output: bool(false)
var_dump(is_countable($var4)); // output: bool(false)
class MyCountable implements Countable {
public function count(): int { return 5; }
}
$countableObj = new MyCountable();
var_dump(is_countable($countableObj)); // output: bool(true)
?>Dans cet exemple, nous définissons quatre variables avec différents types de données : $var1 est un tableau, $var2 est une string, $var3 est un objet simple et $var4 est un integer. Nous utilisons ensuite is_countable() pour vérifier chacune d'elles. Seul $var1 (un tableau) est dénombrable. Notez que $var3 retourne false même s'il s'agit d'un objet — un simple stdClass n'implémente pas Countable. Le dernier exemple montre que MyCountable, qui implémente l'interface Countable, est bien reconnu comme dénombrable.
Le modèle de "comptage sécurisé"
La raison la plus courante d'utiliser is_countable() est de protéger un appel count() contre des valeurs qui pourraient ne pas être dénombrables — par exemple des données provenant d'une API, d'une base de données ou d'une saisie utilisateur où un champ pourrait être null, une string ou un tableau absent :
Protéger count() avec is_countable()
<?php
function safeCount(mixed $value): int {
return is_countable($value) ? count($value) : 0;
}
echo safeCount(["a", "b", "c"]), "\n"; // output: 3
echo safeCount("not an array"), "\n"; // output: 0
echo safeCount(null), "\n"; // output: 0
?>Sans cette protection, count("not an array") lève une TypeError dans PHP 8.0+. is_countable() vous permet de revenir à une valeur par défaut sensée plutôt que de provoquer une erreur.
Pièges à éviter
- Un objet simple n'est pas dénombrable.
is_countable(new stdClass())estfalse. L'objet doit implémenter l'interfaceCountablepour que la vérification réussisse. - Les strings ne sont jamais dénombrables, même si elles ont une longueur. Utilisez
strlen()pour les caractères, pascount(). - Seul le type est vérifié, pas la profondeur.
is_countable()ne rapporte rien sur les tableaux imbriqués —count()lui-même accepte un argument$modepour le comptage récursif. - Avant PHP 7.3, vous pouvez reproduire la vérification avec
is_array($var) || $var instanceof Countable.
Fonctions associées
count()— compte les éléments d'une valeur dénombrable ; la fonction queis_countable()est censée protéger.is_array()— vérification plus ciblée pour le cas des tableaux uniquement.is_object()— vérifie si une valeur est un objet quelconque (dénombrable ou non).gettype()— obtient le nom du type d'une variable.
Conclusion
La fonction is_countable() est un outil utile pour vérifier si une variable est dénombrable en PHP. Elle peut être utilisée pour éviter les erreurs susceptibles de survenir lors du comptage de variables non dénombrables, comme les strings ou les objets. En utilisant cette fonction, les développeurs peuvent s'assurer que leur code travaille uniquement avec des variables dénombrables, rendant ainsi le code plus efficace et plus fiable.