PHP中字符串跟0做比较永远是true

最近在项目中做数据对比的功能,发现一个特殊的情况,0跟任何字符串做比较永远返回true,特意了解了一下。

PHP中字符串跟0做比较永远是true

最近在项目中做数据对比的功能,发现一个特殊的情况,0跟任何字符串做比较永远返回true,特意了解了一下。

如:

$a = 0;
$b = 'test';
if($a == $b){
    echo 'ok';
}else{
    echo 'no';
}

理想中$a不等于$b,应该返回no才对,事实上,返回的时ok,惊喜不!!!

经过测试验证,原来在PHP中字符串跟数值比较时,会将字符串类型的值强制转换成数值型的0

解析

if($str==0)

字符串和数字比较是否相等,相当于把$str字符串隐性转换为数字,然后再比较,相当于

if(intval($str) == 0)

if($str==0)判断和if(intval($str) == 0)是等价的,而和if($str)是不一样的。

if($str)可以判断$str值有没有被初始化。有没有赋值,只要赋值就返回true。

上一篇:Django启用memcache缓存 下一篇:Redis必知必会的知识点

评论

评论(0)

暂无评论