我尝试测试显示嵌套的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结构成为屏幕截图的右侧。任何人都知道什么是错的?
答案 0 :(得分:1)
你需要清空$ 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);
答案 1 :(得分:1)
问题在于这一行,
$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);