W3docs

boolval()

Découvrez la fonction PHP boolval() : syntaxe, valeurs falsy, comparaison avec le cast (bool) et pièges courants à éviter.

Introduction

La fonction boolval() en PHP est une fonction de conversion de type qui transforme n'importe quelle valeur en son équivalent boolean — soit true, soit false. Introduite dans PHP 5.5, elle suit les mêmes règles que PHP utilise partout où une valeur est interprétée comme une condition (par exemple à l'intérieur d'une instruction if), ce qui en fait un moyen clair et explicite de se demander « cette valeur est-elle truthy ? ».

boolval() fait exactement la même chose que le cast (bool). Si elle existe, c'est parce que, contrairement à un cast, une fonction peut être passée en tant que callback — par exemple à array_map() — ce qu'un constructeur de langage comme (bool) ne peut pas faire.

Cette page couvre la syntaxe, la conversion de chaque type, la comparaison entre boolval() et le cast (bool), ainsi que les pièges courants (comme le string "0").

Syntaxe de base

La syntaxe de base de la fonction boolval() est la suivante :

Syntaxe de base de la fonction PHP boolval()

boolval(mixed $value): bool

Le paramètre $value est la valeur à convertir. La fonction retourne toujours un boolean : true pour toute valeur truthy et false pour toute valeur falsy. Elle n'a pas d'effets secondaires et ne lève jamais d'exception.

Quelles valeurs sont falsy ?

PHP ne traite qu'un ensemble fixe de valeurs comme false. Tout le reste est true. Mémoriser cette courte liste est la clé pour utiliser boolval() correctement :

  • false lui-même
  • l'entier 0 et le float 0.0 (et -0.0)
  • le string vide "" et le string "0"
  • l'array vide []
  • null
  • une variable non définie / indéfinie

Le string "0" est le piège classique : il est non vide, pourtant PHP le considère comme falsy. Notez que "0.0", " " (un espace) et "false" sont tous des strings truthy.

Exemple d'utilisation

Voici un exemple d'utilisation de la fonction boolval() en PHP :

Exemple d'utilisation de PHP boolval()

php— editable, runs on the server

Ici, boolval() convertit $var1 (un entier non nul) en true et $var2 (zéro) en false. Nous enveloppons le résultat dans var_export() afin que le boolean s'affiche sous forme de texte littéral true / false — un simple echo afficherait 1 pour true et rien du tout pour false, ce qui rend les résultats difficiles à lire.

boolval() vs le cast (bool)

Pour convertir une seule valeur, boolval($x) et (bool) $x sont interchangeables et produisent des résultats identiques :

<?php

$value = "0";

var_export(boolval($value));   // false
echo "\n";
var_export((bool) $value);     // false

Alors quand devriez-vous choisir boolval() plutôt que (bool) ? Chaque fois que vous avez besoin de passer la conversion en tant que callable. Un cast est un constructeur de langage, pas une fonction, il ne peut donc pas être transmis à des fonctions d'ordre supérieur comme array_map() ou array_filter(). boolval le peut :

Filtrer un array pour ne garder que ses valeurs truthy

php— editable, runs on the server

Chaque élément est converti en boolean. 1, "hello" et [1] deviennent true ; les autres — y compris le trompeur "0" — deviennent false.

Piège courant : le string "0"

Comme boolval() reflète les règles de véracité de PHP, le string "0" est évalué à false. Cela pose des problèmes dans le code qui valide les entrées utilisateur, car les champs de formulaire arrivent toujours sous forme de strings :

<?php

$input = "0"; // e.g. $_POST['quantity']

if (boolval($input)) {
    echo "treated as true\n";
} else {
    echo "treated as false\n"; // this branch runs
}

Si vous voulez réellement savoir « ce string est-il non vide ? » plutôt que « est-il truthy ? », comparez explicitement avec "" via une vérification stricte ($input !== "") au lieu de vous fier à boolval().

Bonnes pratiques pour utiliser boolval()

Pour garantir une utilisation efficace de la fonction boolval() en PHP, il est important de suivre certaines bonnes pratiques :

Utiliser des comparaisons strictes

Lors de l'utilisation de la fonction boolval(), il est important de recourir à des comparaisons strictes (===) plutôt qu'à des comparaisons lâches (==). En effet, les comparaisons lâches peuvent entraîner des comportements inattendus.

Utiliser des types de variables appropriés

Lors de l'utilisation de la fonction boolval(), il est important de s'assurer que la variable convertie est du type approprié. Pour plus de détails sur la façon dont différents types de données se convertissent en booleans, consultez le manuel PHP sur le transtypage.

Référence de conversion de types

Comprendre comment les différents types PHP se convertissent en booleans aide à éviter les résultats inattendus :

TypeConvertit en true quandConvertit en false quand
stringString non videString vide ""
int / floatValeur non nulle0 ou 0.0
arrayArray non videArray vide []
nullJamaisToujours

Fonctions associées

boolval() fait partie de la famille des fonctions d'aide à la conversion de type de PHP. Choisissez celle qui correspond au type dont vous avez besoin :

Pour une vue d'ensemble plus large de la façon dont les valeurs se déplacent entre les types, consultez les types de données PHP.

Conclusion

boolval() convertit n'importe quelle valeur en boolean en suivant les règles de véracité standard de PHP, retournant false uniquement pour la courte liste fixe de valeurs falsy (false, 0, 0.0, "", "0", [], null et les variables non définies) et true pour tout le reste. Elle se comporte exactement comme le cast (bool), avec l'avantage supplémentaire de pouvoir être utilisée comme callback dans des fonctions comme array_map(). Gardez à l'esprit le piège de "0" lors de la validation des entrées sous forme de string, et préférez les comparaisons strictes lorsque vous avez besoin d'un contrôle précis.

Pratique

Pratique
Que fait la fonction boolval en PHP ?
Que fait la fonction boolval en PHP ?
Was this page helpful?