2016-08-23 25 views
0

我需要使用PHP的json_encode()将大数组编码为JSON的帮助。该数组来自本地数据库。我正在使用JS来解析JSON。但是,如果数据集太大,则处理数组为JSON格式的PHP脚本会停止。 (即100,000结果)。我试图将我的memory_limit设置为-1,但仍然没有帮助。是否有可能使用PHP的json_encode()编码一个大数组?JSON_ENCODE无法编码大数组

如果我的问题太混乱,请让我知道。

谢谢大家!

+0

在PHP中JSON_ENCODE的问题是,它倾向于添加双引号和转义序列,这会增加被导入的JSON的实际大小,为什么你不能在客户端处理这个问题? –

+0

@DavidR JSON格式是需要的,因为它会被他人使用(理论上)。 –

+0

@PaulCrovella只是空白页。该页面刚刚停止。 –

回答

3

如果阵列中的每一行都被json_encode成功编码,那么请利用这一事实,只编码每行并自己回显数组结构。

也就是说

$prefix = ''; 
echo '['; 
foreach($rows as $row) { 
    echo $prefix, json_encode($row); 
    $prefix = ','; 
} 
echo ']'; 

如果嵌套比较复杂,那么更多的详细的技术需要会使用,但是这种技术救了我,当我遇到的问题。

0

可接受答案是这样

$prefix = ''; 
echo '['; 
foreach($rows as $row) { 
echo $prefix, json_encode($row); $prefix = ','; 
} 
echo ']'; 

张贴以上。

但是,如果数据集太大,仍然无法保证工作。

可能的解决方案是限制查询。而不是使用SELECT *。只需选择你需要的行,但在我的情况下,我没有绝对的查询控制。所以这个解决方案不适合我。

最后一个是升级我们的服务器的内存,甚至服务器本身,以跟上不断增长的数据集。

谢谢大家的帮助!