intval在win7x64和centos上最大值范围不同的问题
一直使用win7x64进行开发,Web服务器用的是php5.5内置的web服务器,
昨天突然发现一个问题,同样的代码,在win7和centos上,结果不同:
var_dump(intval('21474836470'));
在Win7上输出:int 2147483647
在Centos输出:int 30000000000
手册上说:
最大的值取决于操作系统。 32 位系统最大带符号的 integer 范围是 -2147483648 到 2147483647
64 位系统上,最大带符号的 integer 值是 9223372036854775807。
可是的我系统是win7x64的啊,下载的php也验证了下,是64位版本的,
为什么会出现intval是32位的效果???
在WIndows下看phpinfo,也可以看到是64位:
PHP Version 5.5.14
System Windows NT 7D494368868AFA1 6.1 build 7601 (Windows 7 Ultimate Edition Service Pack 1) AMD64
Build Date Jun 25 2014 12:37:32
Compiler MSVC11 (Visual C++ 2012)
Architecture x64
------解决思路----------------------
这个不仅仅要看操作系统的版本,还要看php的版本,官方发布的PHP版本均为32位
------解决思路----------------------
是否需要用 64 位版本进行开发,需要看运行环境而定。
不然你做的项目会因找不到 64 位服务器而流产
另外,64位系统有真假之分:64位系统64位架构 和 64位系统32位架构(在32位系统中称 32位 和 准32位)
再有就是,或与你遇到的问题可能是个 bug(可上bug网站上查查)现在都 5.6.9 了,可能已经修复了呢?