我在带有 php 7 和 7.1 的 Windows 10 以及带有 PHP 7.0.33 的 raspbian 上都遇到了这个问题当我尝试将一个大的双精度(毫秒时间戳)转换为 int 时,我得到了一个完全错误的结果。例子:$a = 1512298800000.0;echo intval($a);输出为:470311808有关如何解决此问题的任何建议?我在带有 php 7 和 7.1 的 Windows 10 以及带有 PHP 7.0.33 的 raspbian 上都遇到了这个问题当我尝试将一个大的双精度(毫秒时间戳)转换为 int 时,我得到了一个完全错误的结果。例子:$a = 1512298800000.0;echo intval($a);输出为:470311808有关如何解决此问题的任何建议?
1 回答

慕尼黑8549860
TA贡献1818条经验 获得超11个赞
基于intval()手册,它明确指出:
返回值
成功时 var 的整数值,失败时为 0。空数组返回 0,非空数组返回 1。
最大值取决于系统。32 位系统的最大有符号整数范围为 -2147483648 到 2147483647。例如,在这样的系统上,intval('1000000000000') 将返回 2147483647。64 位系统的最大有符号整数值为 9223372036854775807。
字符串很可能返回 0,尽管这取决于字符串最左边的字符。整数转换的通用规则适用。
和
笔记
注意:除非 var 参数是字符串,否则 base 参数无效。
所以基本上看起来你正在使用 32 位系统并且值从整数范围溢出。
- 1 回答
- 0 关注
- 133 浏览
添加回答
举报
0/150
提交
取消