PHP字符串数,比较与零的混淆';s
为什么在字符串比较中0等于0.0PHP字符串数,比较与零的混淆';s,php,Php,为什么在字符串比较中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{ prin
<?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;
?>
我在哪里搞砸了?我确信这是我的错,我只是不知道在哪里。。。
我也试过了,没有打字,结果一样
编辑:尝试测试,实际的源代码显示在那里 为什么在字符串比较中0等于0.0 因为数字字符串(即满足
的字符串是_numeric()
)首先转换为数字并进行数字比较。您还需要使用identity操作符(==
)来比较类型
参考:您说您“也尝试过,但没有使用类型转换”-但是使用字符串转换(即
(string)
)并不能避免“类型转换”-在您的示例中,它们已经是字符串,因此在这种情况下类型转换是多余的。@w3d:thas是正确的,但因为它没有给出我期望的结果,我也尝试了转换,无结果:)谢谢!当它第一次引入PHP时,我经常这样做,但我完全忘记了它。我在examplepage()中的代码中添加了此更正,以供将来参考如果您想要强制执行字符串比较,也可以使用PHP函数-这可能比==
更容易阅读。
?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???