
最近在项目中做数据对比的功能,发现一个特殊的情况,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。
评论
暂无评论
评论(0)