考试类型的表jx_exam_type,可后台添加内容
考试成绩的表jx_result,可后台添加内容
期中考试成绩表中的exam_id对应考试类型表中的id,也就是添加的成绩是属于期中还是期末
然后使用php查询
$sql="SELECT re.type, re.score, re.exam_id, et.title, DATE_FORMAT(et.addtime, '%Y-%m-%d') AS etime FROM jx_result AS re LEFT JOIN jx_exam_type AS et ON re.exam_id = et.id WHERE re.uid = '$uid' ORDER BY et.addtime DESC";
$result=$db->query($sql);
while($row=$result->fetch_assoc()){
$arr[]=$row;
}
echo json_encode($arr);
输出的格式如下
[
{
"type": "语文",
"score": "91",
"exam_id": "2",
"title": "三年级期末考试",
"etime": "2017-06-02"
},
{
"type": "英语",
"score": "89",
"exam_id": "2",
"title": "三年级期末考试",
"etime": "2017-06-02"
},
{
"type": "数学",
"score": "60",
"exam_id": "2",
"title": "三年级期末考试",
"etime": "2017-06-02"
},
{
"type": "数学",
"score": "91",
"exam_id": "1",
"title": "三年级期中考试",
"etime": "2017-05-25"
},
{
"type": "语文",
"score": "85",
"exam_id": "1",
"title": "三年级期中考试",
"etime": "2017-05-25"
},
{
"type": "英语",
"score": "87",
"exam_id": "1",
"title": "三年级期中考试",
"etime": "2017-05-25"
}
]
请问我如何才能将以上输出的json格式变为以下这种
{
"title": "三年级期中考试",
"etime": "2017-05-25",
"exam_id": [
{
"type": "数学",
"score": "91",
"exam_id": "1"
},
{
"type": "语文",
"score": "85",
"exam_id": "1"
},
{
"type": "英语",
"score": "87",
"exam_id": "1"
}
],
"title": "三年级期末考试",
"etime": "2017-06-02",
"exam_id": [
{
"type": "语文",
"score": "91",
"exam_id": "2"
},
{
"type": "英语",
"score": "89",
"exam_id": "2"
},
{
"type": "数学",
"score": "60",
"exam_id": "2"
}
]
}
变为以上这种格式后输出到前台,通过JS来输出到html上面
(可能我写的想要的格式有问题,不过大概意思就是将原来的数据根据exam_id来归类一下再输出)
目前正在学习中,很多地方不是很懂,求指教~~谢谢
这是我理解的架构,这样前端应该可以遍历到
应该是少包了一层,可以遍历一下你的数组,然后就可以得到你想要的了,然后在json转码就可以了
你取数据和处理数据的逻辑有问题,不过你这种的话也可以写
不过你这种取数据的方式不建议,如果数据复杂点 量大点,处理起来就会麻烦