【发布时间】:2014-02-25 13:12:29
【问题描述】:
我有一个包含 30k 项的数组,而 implode 什么也不返回。没有错误信息,没有内存问题,什么都没有。
如果我使用 array_slice 并将数组分割为 100 个项目,它可以正常工作。它也适用于 7k 数组,但不适用于这个。
但是,我在another topic 找到了这段代码,它工作得很好:
$arr = array();
for ($i = 0; $i < 50000; $i++) {
$arr[] = str_shuffle('This sentance is of average length, which The Internet says is aboout 14.2 words.');
}
echo implode(PHP_EOL, $arr);
但是使用 PHP_EOL 我不能在我的选择中使用它,字符串需要用 ',' 分隔。
所以我有两个问题:有什么方法可以使这项工作正常进行吗?我如何才能发现这个错误?因为测试 implode 输出不起作用,is_null、strlen、is_string、empty、isset,所有这些测试都失败了。
【问题讨论】:
-
您的错误日志中有什么内容吗?
-
“我不能在我的选择中使用它”。为什么?发生什么了?它会弹出错误吗?空白页?你的浏览器关闭了吗?你的服务器开始烧了吗? Apache 服务是否停止?它是否开始发送垃圾邮件?也就是说,你不应该这样做。您为每个请求生成至少 3.91 MB (
(50000 * 82) / 1024 / 1024) 更多内容。 -
有例如项目编号。 7k1 一个 qoute 在它的字符串中?一切都是 urlencoded 的吗?例如addslashes() ......或者它会破坏数组!
-
@user3351349 你少了一些逗号?
-
@user3351349 你在
$available_brands_array中的一个值不是字符串——它是someClassName类型的一个类。使用print_r并找出哪个,或使用以下内容:pastebin.com/XJHg8dpH