繁体   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