为什么在STRING比较中0等于0.0?
<?php
isset($_GET['temp'])?$temp=$_GET['temp']:$temp=0;
if($temp == 0) {
if ((string) $_GET['temp']==(string) '0.0'){
$temp=0.01;
print '='.$_GET['temp'].'=';
}else{
print '-'.$_GET['temp'].'-';
}
}else{
print '+'.$_GET['temp'].'+';
}
print $temp;
?>
打印值为:
?temp=1 +1+1 (as expected)
?temp=0.0 =0.0=0.01 (as expected)
?temp=z -z-z (as expected)
?temp=0 =0=0.01 Wait...WHAT???
我搞砸了哪里?我确定是我的错,我只是看不到... 我尝试了它也没有打字,同样的结果......
编辑:
尝试http://test.youp.net/stringcomparetest.php?temp=0进行测试,显示实际的源代码。
答案 0 :(得分:1)
为什么在STRING比较中0等于0.0?
因为数字字符串(即满足is_numeric()
)首先被转换为数字并进行数字比较。您还需要使用标识运算符(===
)来比较类型。