为什么下面的代码正在打印“here”,它应该是“there”
$a = "171E-10314";
if($a == '0')
{
echo "here";
}
else
{
echo "there";
}
答案 0 :(得分:5)
PHP会自动将字符串中的数字或整数解析为整数。 "171E-10314"
是告诉PHP计算171 * 10 ^ -10314
的另一种方法,它等同于(几乎)0
。因此,当您执行$a == '0'
时,'0'
将根据PHP等同于0
,并返回true
。
如果您想比较字符串,请使用strcmp函数或使用严格比较器===
。
答案 1 :(得分:1)
当你使用==比较时,PHP会尝试强制转换为不同的数据类型以检查匹配
在你的情况下:
检查此链接是否有直观表示: http://www.wolframalpha.com/input/?i=171E-10314
答案 2 :(得分:0)
使用=== /*(this is for the 30 character)*/
答案 3 :(得分:0)
根据给出的答案,我试图将字符串转换为数字:
$a = "171E-10314" + 0;
print $a;
我的输出为0。
这就是为什么要在这里打印。