字符串显示为等于数字

时间:2012-09-19 18:43:30

标签: php string equals

我的一些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语句中使用===给了我想要的结果,我只是想明白为什么它不起作用。谢谢你的时间。

1 个答案:

答案 0 :(得分:6)

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

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

强制检查值和类型。

正在发生的事情是'完成'被转换为数字以进行比较。因为那里没有数字,所以它是空的。并且null在您的比较中评估为0.