2016-08-23 36 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 *。只需選擇你需要的行,但在我的情況下,我沒有絕對的查詢控制。所以這個解決方案不適合我。

最後一個是升級我們的服務器的內存,甚至服務器本身,以跟上不斷增長的數據集。

謝謝大家的幫助!