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);
?>
然后如何使用它。
除此之外,您别无选择(除了转换为您不喜欢的字符串)。
以下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);
?>
然后如何使用它。
除此之外,您别无选择(除了转换为您不喜欢的字符串)。