【发布时间】:2013-09-01 06:02:53
【问题描述】:
我在一些 PHP 代码中遇到了一个非常奇怪且令人担忧的问题。我在 IF 语句中返回 true 的变量显然应该返回 false。
$pr = $_SESSION['fin_print_printer']; //this should equal 0
print $pr; //this returns 0, as it should
if($pr == "L"){
print "local";
} else {
print "serve";
}
print $pr; //this returns 0 again, as it should
这会在我的脚本中打印“本地”(在两个零之间)并且不打印“服务”。我的项目中有超过 100,000 行代码,我还没有遇到过这个问题,现在我不知道发生了什么。
如果我这样做 if($pr === "L"),那么它会按预期工作,但上面没有。
【问题讨论】:
-
显示一个示例输出,如果
$prIS0如您所说,0 到 == "L" 在逻辑上是不可能的 -
使用三等号
if ($pr === "L") -
==或===在这种情况下应该无关紧要 -
作为最后的手段,我在这里找到的 CStatementTracer 可能会有所帮助:stackoverflow.com/questions/10574614/…
-
$pr是一个整数变量。如果与==比较,PHP 将尝试将“L”转换为整数,得到一个值 0,它等于$pr的值。如果您与===进行比较,则测试将失败,因为类型不同。
标签: php variables if-statement