PHP数组中的最大整数索引

时间:2015-02-15 07:57:20

标签: php integer int 32bit-64bit

以下PHP代码

<?php
  $x[5076021987]=1234;
  var_dump($x);
?>

32bit架构上产生以下结果:

array(1)
{
   [781054691]=>int(1234)
}

64bit架构的正确结果:

array(1)
{
   [5076021987]=>int(1234)
}

即使在32bit拱门上,我能做些什么才能让它正常工作?请注意,在我的情况下,将长整数转换为字符串不是解决方案。谢谢。

1 个答案:

答案 0 :(得分:1)

检查完所有内容后,php documentation

  

密钥可以是整数或字符串。

检查Syntax section

事实证明,您必须使用String作为索引。绝对没有其他的去。

如果您准确地展示了如何获得这些指数或更多信息,您可以提出其他建议。

唯一可行的解​​决方案是将索引转换为float

<?php
    $index = 5076021987*1.0;
    $x[$index]=1234;
    var_dump($x);
?>

这可能不会奏效。因为php在将其用作索引时会将其转换回integer。我没有32位PC,因此无法测试它。

如果这不起作用,那么你只有其他希望

<?php
    $index = 5076021987+0.1; // or even 5076021987*0.1
    $x[$index]=1234;
    var_dump($x);
?>

然后再使用它。

除此之外,你没有任何其他选择(除了转换为字符串,你不喜欢)。