PHP内爆限制bug?

时间:2013-05-31 14:50:16

标签: php arrays implode

我有一个脚本可以创建一个包含大约40,000个条目的数组,除了服务器的内存外,PHP数组没有限制...

然而,当尝试将大约40,000个条目的数组内插到字符串中时,PHP函数implode()根本不输出任何内容。每个数组条目都有一个大约有一个Z字符的句子。没有内存错误,根本没有错误!

任何人都可以证实吗?

我不确定是否可以发布示例!

编辑(2013-06-03):

我可以确认PHP内存限制设置为-1,PHP错误设置为E_ALL。那里没有错误,根本没有输出。 这似乎是某种PHP的错误。

我使用echo implode("<br>\n", $myLogArr);没有错误或输出任何内容,我通过使用foreach ($myLogArr as $line) echo $line."<br>\n";

来管理以获得正确的预期结果

3 个答案:

答案 0 :(得分:1)

以下工作正常 - 有50,000个条目。

<?php
$arr = array();
for ($i = 0; $i < 50000; $i++) {
    $arr[] = str_shuffle('This sentance is of average length, which The Internet says is about 14.2 words.');
}
echo implode(PHP_EOL, $arr);

我建议增加error_reporting并尝试进一步调试。

安东尼。

答案 1 :(得分:0)

将memory_limit设置为-1然后在try catch块中执行脚本

答案 2 :(得分:0)

$string = str_repeat("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz,",1000000);
$array = explode(",", $string);
var_dump(sizeof($array), strlen(implode(",", $array)));

输出:

int 1000001
int 53000000

OP,你能否展示你的代码?