1

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

4 回答 4

3

is_bool($var)总是真或假。

换句话说,(is_bool($var) != true && is_bool($var) != false)将始终评估为真假

于 2011-03-28T14:00:39.043 回答
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";
}
于 2011-03-28T14:01:15.507 回答
3
(is_bool($var) != true && is_bool($var) != false)

这是做什么的:

true $var不是布尔值且$var是布尔值时语句才应返回。

可以想象,$var不能同时是布尔值和布尔值。(似乎$var有某种人格障碍:))

于 2011-03-28T14:02:00.660 回答
2
(!isset($var) || (is_bool($var) != true && is_bool($var) != false))

(!isset($var) || (!is_bool($var) && is_bool($var)))

(!isset($var) || false)

$var已设置,因此结果始终为false.

于 2011-03-28T14:04:34.210 回答