代码如下:
<?php
   echo "14210022800015704" == "14210022800015705";
?>
输出结果居然为1上述字符串为17个字符,只要两个字符串最后一个字符之间相差数字为1,然后进行比较输出的结果都是1,也就是相等。请问有谁知道为什么??急求解。测试:将上述两个字符串的长度改为16,最后一个字符串之间相差数字1,然后进行比较,输出结果不为1,也就是不相等。

解决方案 »

  1.   

    不要钻牛角尖了,用===或者strcmp吧,也许这是php的漏洞
      

  2.   

    var_dump("14210022800015704"=="14210022800015705"); 
    var_dump("14210022800015706"=="14210022800015705"); 结果:
    bool(true) bool(false) 
      

  3.   


    目前已经采用“===”把问题解决了,现在只是想搞明白问题原因,是php的bug还是其它原因等等。
      

  4.   


        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) 
      

  5.   

    还是3楼说的有道理 //全是16位(楼主的全是17位的)
    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)