为什么这在php中等于false

时间:2014-02-28 13:31:17

标签: php

为什么打印错误。是因为month是字符串而true是布尔值吗?

$month = "string";
if ($month === true) {
    echo "true";
} else {
   echo "false";
}

4 个答案:

答案 0 :(得分:2)

===是值类型的比较运算符,因此$month必须是boolean(当然还有true) 。是吗?

您应该使用$month == true(仅比较值,不论类型)或仅if($month)(因为不存在可能为0的月份)

答案 1 :(得分:1)

使用'==='时,您按值和按类型进行比较。由于$month = 'string';显然是类型字符串,因此它不等于布尔true,因此表达式的计算结果为false。

要使其输出为“true”,请将“===”运算符替换为“==”

这是一个指向question的链接,在这里很好地总结了

答案 2 :(得分:1)

==用于比较,但使用===(注意额外的'='符号)也将检查数据的类型。 因为$ month包含一个字符串,并且您将它与布尔值进行比较,所以它将返回false。

当您使用==时,它将返回true。

答案 3 :(得分:0)

在条件时间,如果你还没有宣布$ month变量。那么$ month将是未定义的,'==='true将始终返回false。