PHP数组中的最大整数索引
下面是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
$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);
?>