PHP和花哨的布尔值

时间:2011-03-28 13:58:09

标签: php boolean boolean-expression

如果有人能解释为什么以下不能正常工作,那么在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"; 
}

4 个答案:

答案 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()会返回truefalse,因此您要删除第一个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