在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并修复它。。。谢谢!将尽快标记为正确。