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) != true && is_bool($var) != false)

これは何をしますか:

ステートメントは、がブール値ではなく、$varがブール値である場合のみtrue 返さます。$var

ご想像のとおり$var、ブール値であると同時にブール値になることはできません。$varある種の人格障害があるようです:))

于 2011-03-28T14:02:00.660 に答える
3

is_bool($var)常に true または false のいずれかです。

つまり、(is_bool($var) != true && is_bool($var) != false)は常にtrue false に評価されます。

于 2011-03-28T14:00:39.043 に答える
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";
}
于 2011-03-28T14:01:15.507 に答える
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 に答える