编程语言
首页 > 编程语言> > 使用==比较PHP中的不同字符串将返回true

使用==比较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