字符串显示为等于数字

Eri*_*rom 1 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();
}
Run Code Online (Sandbox Code Playgroud)

出于某种原因,第二个if语句触发并终止脚本.我无法弄清楚为什么,当$ pointer等于0时,它显然也等于"done".这是一件非常容易的东西吗?

我已经解决了这个问题,在第二个if语句中使用===给了我想要的结果,我只想理解它为什么不能在第一时间工作.感谢您的时间.

and*_*wsi 6

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

if($pointer === "done"){
Run Code Online (Sandbox Code Playgroud)

强制检查值和类型.

发生的事情是'done'被转换成一个数字用于比较.因为那里没有数字,所以它是空的.并且null在您的比较中评估为0.