什么是PHP中数组的最大键数

Eri*_*amb 10 php arrays

我正在写一个我打电话的PHP脚本

$lines = file('base_list.txt');
Run Code Online (Sandbox Code Playgroud)

将文件分成数组.该文件中有超过100,000行,应该是数组中的100,000个元素,但是当我运行时

print_r($lines);
exit;
Run Code Online (Sandbox Code Playgroud)

该数组只包含7280个元素.

所以我很好奇,WTF?数组可以拥有的密钥数量是否有限制?我在本地运行这款双核2.0Ghz,配备2GB内存(Vista和IIS); 所以我有点困惑4MB文件如何抛出这样的结果.

编辑:我可能应该提到我之前在php.ini中也将memory_limit设置为512MB.

Eri*_*amb 5

达里尔海因,

是的,错误日志中没有任何内容.我甚至增加了错误报告,但仍与print_r()无关.

回应杰伊:我跑了

echo count($lines);
Run Code Online (Sandbox Code Playgroud)

我得到105,546的结果但仍然print_r()只显示7280.

按照Rob Walker的建议,我循环遍历数组中的所有元素,它实际上包含了所有结果.这让我相信问题在于print_r()本身而不是数组大小的限制.

另一个奇怪的事情是我在我的一个REHL服务器上尝试了它,结果是应该的.现在我不想把它归咎于Windows/IIS,但你去了.

考虑到上述情况,我认为这个问题应该重新命名,因为它不再与数组相关,而是print_r.


Cor*_*ory 1

我相信它是基于 php.ini 文件中设置的可用内存量。