我的一些php中有一个奇怪的问题。似乎正在发生的是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时,它显然也等于“done”。我只是忽略了这件事吗?
我已经解决了这个问题,在第二个if语句中使用===给了我想要的结果,我只是想明白为什么它不起作用。谢谢你的时间。
答案 0 :(得分:6)
这是一个类型比较问题;如你所说,使用:
if($pointer === "done"){
强制检查值和类型。
正在发生的事情是'完成'被转换为数字以进行比较。因为那里没有数字,所以它是空的。并且null在您的比较中评估为0.