使用==比较PHP中的不同字符串将返回true
作者:互联网
我只是在调试脚本,发现if语句没有按照我的预期运行.
var_dump("6064365413078728979" == "6064365413078728452");
die();
上面的代码将导致以下结果:
bool(true)
使用===运算符,它按预期工作.有人有任何想法吗?
我正在使用PHP版本5.3.13和x64 windows机器上的wamp安装.
解决方法:
<?php
$a=6064365413078728979;
$b=6064365413078728452;
echo $a."<br>".$b;
//var_dump( $a==$b );
die();
?>
运行时,然后在您的机器上可能超出数字限制,这是一个数字比较发生.尝试上面的脚本,看看$a的值可能与你给出的值不同.
这就是为什么当两者在数字上进行比较时它们是相等的.因此,如其他人所建议的那样使用===
编辑:基于@ Axel建议的解释.
PHP Manual解释道
The size of a float is platform-dependent, although a maximum of
~1.8e308 with a precision of roughly 14 decimal digits is a common
value (the 64 bit IEEE format).
this website提供和解释溢出现象和一个小的PHP代码来测试你的系统的整数和浮点范围.了解服务器的限制最有可能解释为什么会出现优惠流程
标签:php,comparison,string-comparison,string,comparison-operators 来源: https://codeday.me/bug/20190718/1494006.html