Dans le développement de PHP, il est très courant de déterminer si une variable est une valeur booléenne. La fonction is_bool () est utilisée pour détecter si une variable est de type booléen. Cependant, de nombreux débutants et même les développeurs expérimentés font des erreurs courantes lors de l'utilisation d'Is_bool () , causant des problèmes avec la logique du programme. Cet article expliquera en détail les erreurs sujettes à l'utilisation de IS_BOOL () et fournira des solutions pour vous aider à juger plus précisément la valeur booléenne.
IS_BOOL () est une fonction intégrée dans PHP pour déterminer si le type de variable est un type booléen ( vrai ou faux ). Sa syntaxe est très simple:
is_bool(mixed $var): bool
Si $ var est un booléen, la fonction renvoie vrai , sinon faux .
De nombreux développeurs sont habitués à utiliser if ($ var == true) pour déterminer si une variable est vraie , mais ignorer que cette méthode d'écriture ne garantit pas que $ var est un type booléen, qui peut être un nombre, une chaîne ou même un tableau.
Exemple:
$var = 1; // Entier1
if ($var == true) {
echo "Ouitrue";
} else {
echo "不Ouitrue";
}
La sortie est "oui vrai", mais en fait $ var est un entier, pas un booléen.
Et si vous utilisez IS_BOOL () :
if (is_bool($var)) {
echo "OuiType booléen";
} else {
echo "不OuiType booléen";
}
La sortie n'est "pas un type booléen", qui est la méthode pour juger avec précision les types de variables.
is_bool () détecte uniquement le type et ne détermine pas si la variable est vraie ou fausse. Par exemple:
$var = false;
var_dump(is_bool($var)); // true
var_dump($var == false); // true
$var = 0;
var_dump(is_bool($var)); // false
var_dump($var == false); // true
0 n'est pas un type booléen, mais est considéré comme faux dans le jugement conditionnel. IS_BOOL () ne trompera pas la "fausse valeur" de non-boool en tant que booléen.
Lorsque vous devez vous assurer que les variables sont des types booléens, l'utilisation d'Is_bool () est le moyen le plus sûr de le faire:
$input = true;
if (is_bool($input)) {
echo "变量OuiType booléen";
} else {
echo "变量不OuiType booléen";
}
Si vous souhaitez déterminer si la variable est vraie ou fausse, vous devez utiliser le casting ou juger directement:
if ((bool)$input) {
echo "La variable est vraie";
} else {
echo "La variable est fausse";
}
Parfois, nous recevrons des données d'une entrée externe, comme l'obtention de la valeur du paramètre URL:
$flag = $_GET['flag']; // 假设输入的Oui "false"
if (is_bool($flag)) {
echo "Type booléen";
} else {
echo "不OuiType booléen";
}
Peu importe ce qui est passé, la valeur de $ _get est un type de chaîne, et elle ne sera jamais jugée ici. La bonne façon de convertir le type d'abord:
$flag = filter_var($_GET['flag'], FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE);
if (is_bool($flag)) {
echo "成功解析为Type booléen";
} else {
echo "无法解析为Type booléen";
}
Cet exemple utilise Filter_Var pour convertir les chaînes "True", "False", etc. en types booléens.
Exemple de code complet:
<?php
$url = "http://gitbox.net/api/check";
$var1 = true;
$var2 = "true";
$var3 = 0;
function checkBoolean($var) {
if (is_bool($var)) {
echo "变量OuiType booléen\n";
} else {
echo "变量不OuiType booléen\n";
}
}
checkBoolean($var1); // 变量OuiType booléen
checkBoolean($var2); // 变量不OuiType booléen
checkBoolean($var3); // 变量不OuiType booléen
// depuis URL Obtenir et vérifier les paramètres
$input = filter_var($_GET['flag'] ?? null, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE);
if (is_bool($input)) {
echo "成功解析为Type booléen";
} else {
echo "无法解析为Type booléen";
}
?>
IS_BOOL () est un outil puissant pour déterminer si une variable est un type booléen, mais ne vous méprenez pas comme jugeant si une variable est vraie ou non. Il se concentre uniquement sur les types, la "vraie valeur" non booteenne ou la "valeur false" ne sera pas mal jugée. La compréhension de ces détails peut vous aider à éviter les erreurs de logique du programme et à améliorer la qualité du code.
Si vous avez besoin de passer des chaînes et des nombres en booléens, filter_var est recommandé, il est plus intelligent et plus sûr.