【发布时间】:2013-08-29 13:34:51
【问题描述】:
我试图在一个大数组上使用json_encode,结果什么也没返回(是的,我检查它是 utf-8)。当我开始调查这个问题时,我发现当字符串大于 65536 时会出现问题。
所以当我的数组大小为 1245 时,它来自 json_encode 的字符串长度为 string(65493),但是当我将数组增加 1 时,字符串变得比 65536 长,json_encode 无法输出任何结果。
我认为问题是因为memory limit,但是当我检查我的 php.ini 时,我发现它是 -1。
知道可能是什么问题吗?
基本上我在做这样的事情:
$arr = array();
for($i =0; $i<9000; $i++){
$arr[] = array(
'name' => 'test',
'str' => md5($i)
);
}
echo '<pre>'.json_encode($arr).'</pre>';
P.S.对不起各位。我发现了问题,这要感谢一个名字不可复制的人:-)(感谢你的劳伦斯)。
<pre> 是罪魁祸首……由于某种原因,它不会在我的浏览器中打印字符串,但它就在那里。
Lawrence,如果你愿意,你可以写出来,我会接受它是正确的。因为你是我想出这个的原因。
【问题讨论】:
-
请确保已启用错误报告
-
你能重现这个行为吗,举个例子。
-
它不打印字符串但它确实存在?现在这更奇怪了。
:P -
请根据提供的答案看一下这个stackoverflow.com/a/6194563/562036,似乎对json_encode()没有限制,但是这个数字65536似乎是java中的字符串限制怎么做你明白了吗?