代码如下:
<?php
echo "14210022800015704" == "14210022800015705";
?>
输出结果居然为1上述字符串为17个字符,只要两个字符串最后一个字符之间相差数字为1,然后进行比较输出的结果都是1,也就是相等。请问有谁知道为什么??急求解。测试:将上述两个字符串的长度改为16,最后一个字符串之间相差数字1,然后进行比较,输出结果不为1,也就是不相等。
<?php
echo "14210022800015704" == "14210022800015705";
?>
输出结果居然为1上述字符串为17个字符,只要两个字符串最后一个字符之间相差数字为1,然后进行比较输出的结果都是1,也就是相等。请问有谁知道为什么??急求解。测试:将上述两个字符串的长度改为16,最后一个字符串之间相差数字1,然后进行比较,输出结果不为1,也就是不相等。
var_dump("14210022800015706"=="14210022800015705"); 结果:
bool(true) bool(false)
目前已经采用“===”把问题解决了,现在只是想搞明白问题原因,是php的bug还是其它原因等等。
var_dump("14210022800015700"=="14210022800015701"); //bool(true) var_dump("14210022800015701"=="14210022800015702"); //bool(false) var_dump("14210022800015702"=="14210022800015703"); //bool(false) var_dump("14210022800015703"=="14210022800015704"); //bool(true) var_dump("14210022800015704"=="14210022800015705"); //bool(true) var_dump("14210022800015705"=="14210022800015706"); //bool(false) var_dump("14210022800015706"=="14210022800015707"); //bool(false) var_dump("14210022800015707"=="14210022800015708"); //bool(true) var_dump("14210022800015708"=="14210022800015709"); //bool(true)
var_dump('1421002280001570' == '1421002280001571');
var_dump('1421002280001571' == '1421002280001572');
var_dump('1421002280001572' == '1421002280001573');
var_dump('1421002280001573' == '1421002280001574');
var_dump('1421002280001574' == '1421002280001575');
var_dump('1421002280001575' == '1421002280001576');
var_dump('1421002280001576' == '1421002280001577');
var_dump('1421002280001577' == '1421002280001578');
var_dump('1421002280001578' == '1421002280001579');
//bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false)