在PHP中将字符串转换为长整型的正确方法

23
我尝试了 (int) "4209531264"intval("4209531264") 但是很遗憾我得到的是 2147483647(我意识到这是由于32位架构或一些php依赖关系之类的问题)。
我想到了 "4209531264" + 0 这个方法可以返回正确的结果,但令人惊讶的是它可以工作,因为它超出了最大整数值。
但真正的问题是:这是将字符串转换为长整型的“正确方式”吗?
编辑:
(float)
感谢评论!开阔了眼界!

8
(float) "your string" - PeeHaa
1
你在使用32位平台吗?由于该数字对于32位有符号整数来说太大了,所以你需要使用float而不是int - Barmar
最大值取决于系统。32位系统的最大有符号整数范围为-2147483648至2147483647。因此,在这样的系统上,intval('1000000000000')将返回2147483647。http://www.php.net/manual/en/function.intval.php - Vincent Decaux
2147483647是32位系统上的最大整数值。 - barell
相关的 var_dump(PHP_INT_MAX); - PeeHaa
1个回答

20
只要您不太在意最终结果的确切类型是什么,"number" + 0 可能是将输入转换为“自然”数字数据类型的最佳方法。如果输入没有小数部分并且适合(请参见 PHP_INT_MAX),则结果将是整数;否则,结果将是浮点数。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接