PHP数组中的最大整数索引

PHP数组中的最大整数索引,php,integer,int,32bit-64bit,Php,Integer,Int,32bit 64bit,下面是PHP代码 <?php $x[5076021987]=1234; var_dump($x); ?> 但在64位体系结构上的正确结果是: array(1) { [781054691]=>int(1234) } array(1) { [5076021987]=>int(1234) } 即使在32位arch上,我能做些什么使它正常工作?请注意,在我的例子中,将长整数转换为字符串不是解决方案。谢谢。检查完所有内容后,说 键可以是整数或字符串 检查语

下面是PHP代码

<?php
  $x[5076021987]=1234;
  var_dump($x);
?>
但在
64位
体系结构上的正确结果是:

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

即使在
32位
arch上,我能做些什么使它正常工作?请注意,在我的例子中,将长整数转换为字符串不是解决方案。谢谢。

检查完所有内容后,说

键可以是整数或字符串

检查
语法部分

因此,您必须使用
String
作为索引。绝对没有别的办法

如果你能准确地展示你是如何得到这些指数的,或者你想做什么的更多信息,我可以提出其他建议

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

<?php
    $index = 5076021987*1.0;
    $x[$index]=1234;
    var_dump($x);
?>
然后如何使用它

除此之外,您没有任何其他选项(除了转换为字符串,这是您不喜欢的)。

使用字符串而不是文字整数。这与它用作数组键无关。整数在数组赋值之前就已经被选中了。正如我所写的,转换为字符串对我来说不是解决方案。此外,$x=5076021987+1在32位上正确地计算为5076021988,所以我真的不明白为什么PHP在计算上工作正常,但在数组索引上工作错误。5076021988只是一个幸运的浮点数,打印为整数:使用var_dump($x)。你还没有真正解释为什么不能使用字符串。(数组在内部以字符串的形式存储键。)我认为您使用的是windows serverNope,使用32位UBUNTU,如果您要将某些内容转换为浮点,只需使用
(float)
<代码>$index=(float)5076021987是,但如果用作索引,它将被重新转换为int@尼尔,你的例子对我来说毫无意义。分配$x[]=1234只是在下一个可用索引处添加值,如$x[0]=1234(如果$x尚未定义)。无论如何,使用$x[$index]并不能解决问题。是的。我发现了。我已经提到了。你可以试试第二个。如果你展示更多的代码,或者展示你到底想做什么,也许我可以给出更好的建议。你的第二个解决方案是一样的,索引显示为781054691
<?php
    $index = 5076021987+0.1; // or even 5076021987*0.1
    $x[$index]=1234;
    var_dump($x);
?>