如果有人能解释为什么以下不能正常工作,那么在php中遇到布尔问题就会非常感激
$var = "asdas";
// or this if(!isset($var) || ($var && !$var)){
if(!isset($var) || (is_bool($var) != true && is_bool($var) != false)){
echo "is not a boolean";
}else{
echo "it IS a boolean";
}
输出始终是 - > “它是一个布尔”
提前致谢
感谢您的帮助,我知道我做了什么(校友错误)。
解决方案
$var = "asda";
if(!isset($var) || (is_bool($var) === false)){
echo "it not a boolean";
}else{
echo "is IS a boolean";
}
答案 0 :(得分:3)
is_bool($var)
始终为真或假。
换句话说,(is_bool($var) != true && is_bool($var) != false)
将始终评估为 true false。
答案 1 :(得分:3)
问题在于:
(is_bool($var) != true && is_bool($var) != false)
is_bool()
会返回true
或false
,因此您要删除第一个echo
。
将您的代码更改为:
$var = "asdas";
if(isset($var) and is_bool($var)){
echo "it IS a boolean";
}else{
echo "is not a boolean";
}
答案 2 :(得分:3)
(is_bool($var) != true && is_bool($var) != false)
这是做什么的:
如果true
NOT 布尔 AND $ var IS,语句应仅返回$var
可以想象,$var
不能是布尔值,同时也是布尔值。 (似乎$var
有某种人格障碍:))
答案 3 :(得分:2)
(!isset($var) || (is_bool($var) != true && is_bool($var) != false))
(!isset($var) || (!is_bool($var) && is_bool($var)))
(!isset($var) || false)
$var
已设置,因此结果始终为false
。