为什么这在php中等于false

为什么这在php中等于false,php,Php,为什么这张照片是假的。是因为月份是字符串而true是布尔值吗 $month = "string"; if ($month === true) { echo "true"; } else { echo "false"; } 使用“==”时,您正在按值和类型进行比较。自$month='string'起;显然是字符串类型,它不等于布尔值true,因此表达式的计算结果为false 要使其输出为真,请将===运算符替换为== 这里有一个指向Here on的链接,它很好地总结了它==是值和类

为什么这张照片是假的。是因为月份是字符串而true是布尔值吗

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

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

要使其输出为真,请将===运算符替换为==

这里有一个指向Here on的链接,它很好地总结了它

==是值和类型的比较运算符,所以$month必须是布尔值,当然也是true。是吗

您应该使用$month==true,它将只比较值,而不管类型是什么,或者如果$month as不存在,那么它可能是0

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


当您使用==,如果您没有声明$month变量,它将在条件时间返回true。

。然后,$month将是未定义的,'=='true将始终返回false。

是否定义了$month?您还期望什么?阅读友好的手册-它的解释相当明确。任何针对$month的测试都将返回false,除非是null,它将发出E_通知并返回true,empty将返回true忽略我上面评论中的E_通知部分,如果在未声明的变量上运行,该测试将触发E_通知。