【发布时间】:2015-02-15 07:57:20
【问题描述】:
以下PHP代码
<?php
$x[5076021987]=1234;
var_dump($x);
?>
在32bit 架构上产生以下结果:
array(1)
{
[781054691]=>int(1234)
}
但64bit 架构上的正确结果:
array(1)
{
[5076021987]=>int(1234)
}
我有什么办法可以让它在32bit arch 上正常工作吗?请注意,在我的情况下,将长整数转换为字符串不是解决方案。谢谢。
【问题讨论】:
-
使用字符串而不是文字整数。这与它用作数组键无关。整数在数组赋值之前已经被 chomped 了。
-
正如我所写,转换为字符串对我来说不是解决方案。此外,$x=5076021987+1 在 32 位上正确计算为 5076021988,所以我真的不明白为什么 PHP 在计算上可以正常工作,但在数组索引上却错误。
-
5076021988 只是一个打印为整数的幸运浮点数:使用 var_dump($x)。而且您还没有真正解释为什么您不能使用字符串。 (无论如何,数组在内部将键存储为字符串。)
-
我认为你使用的是 windows 服务器
-
不,使用 32 位 ubuntu
标签: php integer int 32bit-64bit