【问题标题】:PHP implode limit bug?PHP内爆限制错误?
【发布时间】:2013-05-31 14:50:15
【问题描述】:

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

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

谁能证实这一点?

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

编辑(2013-06-03):

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

我使用echo implode("<br>\n", $myLogArr); 没有错误或输出任何内容,我已经设法通过使用foreach ($myLogArr as $line) echo $line."<br>\n"; 获得正确的预期结果

【问题讨论】:

标签: php arrays implode


【解决方案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 并尝试进一步调试。

安东尼。

【讨论】:

    【解决方案2】:

    memory_limit 为 -1,然后在 try catch 块中执行你的脚本

    【讨论】:

      【解决方案3】:
      $string = str_repeat("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz,",1000000);
      $array = explode(",", $string);
      var_dump(sizeof($array), strlen(implode(",", $array)));
      

      输出:

      int 1000001
      int 53000000
      

      OP,你能出示你的代码吗?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-03-06
        • 1970-01-01
        • 2015-10-30
        • 1970-01-01
        • 1970-01-01
        • 2014-10-17
        • 2013-09-27
        • 2012-01-24
        相关资源
        最近更新 更多