簡體   English   中英

PHP以錯誤的格式編碼嵌套的JSON

[英]php encode nested json in wrong format

我試圖測試顯示嵌套的Json結構,但結果格式錯誤。

PHP

while($row=$statement->fetch()){

        $value=str_replace('"','',$row['item_option_value']);
        $option[$row['item_option_name']]=explode(',',$value);
        $all[$row['oid']]=$option;

    }   
echo json_encode($all);

mysql數據庫結構

在此處輸入圖片說明

這是我運行腳本時的結果。

在此處輸入圖片說明

我希望json結構在屏幕截圖的右側。 有人知道怎么了嗎?

您將需要清空$ option數組,如下所示:

$option = []; //or $option = array(); in PHP < 5.4

為了不繼續存儲來自先前迭代的數據,這是必需的。

所以:

while($row=$statement->fetch()){

    $value=str_replace('"','',$row['item_option_value']);
    $option = [];
    $option[$row['item_option_name']]=explode(',',$value);
    $all[$row['oid']]=$option;

}   
echo json_encode($all);

問題是因為這里有這條線,

$option[$row['item_option_name']]=explode(',',$value);

while()循環的每次迭代中,您都將先前計算的 $options數組附加到$all 而是創建一個臨時數組來保存中間結果,並在每次迭代中將其附加到$all ,如下所示:

while($row=$statement->fetch()){
    $opArray = array();
    $value=str_replace('"','',$row['item_option_value']);
    $opArray[$row['item_option_name']]=explode(',',$value);
    $all[$row['oid']]=$opArray;

}   
echo json_encode($all);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM