在PHP中不受尊重的if语句

在PHP中不受尊重的if语句,php,Php,请看一下上面的代码 我想大家都同意,如果$fromcat为0,我就不可能在控制台中获得“绑定到CAT(…)”消息 然而,这就是: if ($fromcat == "true" || $fromcat == 1){ error_log("binding to CAT " . $cat . " because pfc was " . $fromcat); } else { error_log("binding to ROOM " . $room . " because p

请看一下上面的代码

我想大家都同意,如果
$fromcat
为0,我就不可能在控制台中获得“绑定到CAT(…)”消息

然而,这就是:

if ($fromcat == "true" || $fromcat == 1){

    error_log("binding to CAT " . $cat . " because pfc was " . $fromcat);   

} else {

    error_log("binding to ROOM " . $room . " because pfc was " . $fromcat); 

}
这怎么可能呢?不能同时显示单词CAT和数字0!PHP喝醉了吗?

使用相同的(
=
)比较运算符

[01-Apr-2013 22:34:50] binding to CAT single because pfc was 0
您正试图将
$fromcat
与字符串
“true”
进行比较。如果要将其与布尔值true进行比较,可以使用
$fromcat==true
。否则:

如果将数字与字符串进行比较,或者比较涉及数字字符串,则会将每个字符串转换为数字,并以数字形式执行比较

使用相同的(
=
)比较运算符

[01-Apr-2013 22:34:50] binding to CAT single because pfc was 0
您正试图将
$fromcat
与字符串
“true”
进行比较。如果要将其与布尔值true进行比较,可以使用
$fromcat==true
。否则:

如果将数字与字符串进行比较,或者比较涉及数字字符串,则会将每个字符串转换为数字,并以数字形式执行比较


改变你的状况也是个好主意

所以

变成

if ($fromcat === "true" || $fromcat === 1)

原因:

改变你的状况也是个好主意

所以

变成

if ($fromcat === "true" || $fromcat === 1)

原因:

如果你用
===
操作符代替
=
会发生什么?不幸的是,
0==“true”
是真的。如果你用
===
操作符代替
=
会发生什么?不幸的是,
0==“true”
是真的。我不知道!只是浪费了一整天的时间来追踪这个bug并修复它。。。谢谢!我会尽快做正确的标记。我不知道!只是浪费了一整天的时间来追踪这个bug并修复它。。。谢谢!将尽快标记为正确。