【发布时间】:2012-04-29 01:38:11
【问题描述】:
我正在处理涉及非常大的主键(12 位)的数据。当我尝试将数据以id => value 的形式放入数组时,索引未正确分配。
$test = array(190337172011 => 'Apple');
print_r($test);
结果:
Array ( [1358610987] => Apple )
有时它甚至会产生负数。为什么会这样?它是一个错误吗?
我在 IIS 上运行 PHP 5.3.10。
【问题讨论】:
-
这是 32 位还是 64 位版本的 PHP?如果它是 32 位平台,那么存储这些密钥的空间将用完:php.net/manual/en/language.types.integer.php
-
见this question,好像是内存问题。
-
@bfavaretto: 如果内存太大,脚本会被终止;不会返回错误的结果。
-
感谢@BillyONEal,它是 PHP 的 32 位版本,但我还是有点困惑。如果我反转键和值:
Array ( [Apple] => 190337172011 )工作正常。它不是仍然以整数形式存储吗? -
@Billy 我的意思是 PHP 可用的内存量(通过
memory_limitphp.ini 设置)决定了数组键可以拥有的最大值——根据我链接的问题的接受答案到。