php弱类型对比要注意

2021-04-16 19:47:49 / 4820 / 编程代码

星期五的下午,我兢兢业业的写curd,

代码传上去,一运行,结果并没有得到我想要的结果,

当时我就纳闷了,因为写了个很特别简单的if判断,这怎么都能错.

然后我把代码分离出来,测试了一下.

然后就发现了这个问题

<?php
if(0 == 'clean'){
echo 1;
}else{
echo 0;
}

你认为它会输出什么? 

其实是1,是不是很震惊?

我在在线php运行网站上测试了一下

https://sandbox.onlinephpfunctions.com/ 

php-4.49到php-7.4.13无一幸免,都会输出1

只有php-8才能得到正常结果.

这是因为php类型强制转化的结果。

贴一下chengyao的回答:

var_dump(0 == 'test');  // true
var_dump((int)'test'); // 0


var_dump(0 == '5test'); // false
var_duup((int)'5test'); // 5


gravatar头像