为什么在STRING比较中0等于0.0?比较搞乱零的PHP字符串数字
<?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???
我在哪里搞乱?我敢肯定,它是我的错,我只是不想看到... 我试了一下没有typejuggling也,同样的结果...
编辑:
尝试http://test.youp.net/stringcomparetest.php?temp=0进行测试,实际的源代码显示那里。
你说你“试了一下没有typejuggling也” - 但使用字符串投(即'(串)'。)不避“式的杂耍” - 在你的例子他们已经是字符串,所以在这种情况下类型转换是多余的。 – MrWhite
@ w3d:thas正确,但因为它没有给我我期待的结果,所以我尝试了铸造以及无结果:) – ExploWare