以下PHP代码
<?php
$x[5076021987]=1234;
var_dump($x);
?>
在32bit
架构上产生以下结果:
array(1)
{
[781054691]=>int(1234)
}
但64bit
架构的正确结果:
array(1)
{
[5076021987]=>int(1234)
}
即使在32bit
拱门上,我能做些什么才能让它正常工作?请注意,在我的情况下,将长整数转换为字符串不是解决方案。谢谢。
答案 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);
?>
然后再使用它。
除此之外,你没有任何其他选择(除了转换为字符串,你不喜欢)。
击>