1

我在我的一些 php.ini 文件中遇到了一个奇怪的问题。似乎正在发生的事情是 0 被显示为等于字符串“done”。这是正在发生的事情:

if(!isset($pointer)){
    $pointer = 0;   
}
error_log($pointer); //in this instance, I haven't set a pointer, returns 0
if($pointer == "done"){
    die();
}

出于某种原因,第二个 if 语句正在触发和终止脚本。我不明白为什么,当 $pointer 等于 0 时,它显然也等于“完成”。这是我忽略的超级简单的事情吗?

我已经解决了这种情况,在第二个 if 语句上使用 === 给了我想要的结果,我只想了解为什么它一开始就不起作用。感谢您的时间。

4

1 回答 1

6

这是一个类型比较问题;正如你所说,使用:

if($pointer === "done"){

强制检查值和类型。

正在发生的事情是“完成”被转换为一个用于比较的数字。由于那里没有数字,因此它显示为空。在您的比较中,null 的计算结果为 0。

于 2012-09-19T18:45:23.970 回答