W3docs

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 :

$varRetourne
Tableau (ex. [1, 2, 3] ou [])true
Objet implémentant Countabletrue
string, integer, float, booleanfalse
nullfalse
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()) est false. L'objet doit implémenter l'interface Countable pour 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, pas count().
  • 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 $mode pour 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 que is_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.

Pratique

Pratique
Que fait la fonction is_countable() en PHP ?
Que fait la fonction is_countable() en PHP ?
Was this page helpful?