php中奇怪的==问题,急求解

风一样的女子& 2010-09-25 11:39:45
代码如下:
<?php
echo "14210022800015704" == "14210022800015705";
?>
输出结果居然为1

上述字符串为17个字符,只要两个字符串最后一个字符之间相差数字为1,然后进行比较输出的结果都是1,也就是相等。请问有谁知道为什么??急求解。

测试:将上述两个字符串的长度改为16,最后一个字符串之间相差数字1,然后进行比较,输出结果不为1,也就是不相等。
...全文
120 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 codeworker999 的回复:]
没遇到过 楼主的 问题~~~

如果说是大数比较我还有点相信
[/Quote]

大数比较肯定会溢出,相等了也是自然的。
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 kyzy_yy_pm 的回复:]
不要钻牛角尖了,用===或者strcmp吧,也许这是php的漏洞
[/Quote]

目前已经采用“===”把问题解决了,现在只是想搞明白问题原因,是php的bug还是其它原因等等。
codeyell-com 2010-09-25
  • 打赏
  • 举报
回复
var_dump("14210022800015704"=="14210022800015705");
var_dump("14210022800015706"=="14210022800015705");

结果:
bool(true) bool(false)
w7424 2010-09-25
  • 打赏
  • 举报
回复
不支持 16位以上的 不要在意他
codeworker999 2010-09-25
  • 打赏
  • 举报
回复
没遇到过 楼主的 问题~~~

如果说是大数比较我还有点相信
kyzy_yy_pm 2010-09-25
  • 打赏
  • 举报
回复
不要钻牛角尖了,用===或者strcmp吧,也许这是php的漏洞
kyzy_yy_pm 2010-09-25
  • 打赏
  • 举报
回复
还是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)
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 baiyuxiong 的回复:]
var_dump("14210022800015704"=="14210022800015705");
var_dump("14210022800015706"=="14210022800015705");

结果:
bool(true) bool(false)
[/Quote]

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)

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧