PHP 数组中的最大整数索引

Maximum integer index in PHP array

以下PHP代码

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

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

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

64bit 架构的正确结果:

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

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

检查完所有内容后,php documentation

The key can either be an integer or a string.

检查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);
?>

然后如何使用它。

除此之外,您别无选择(除了转换为您不喜欢的字符串)。