javascript – So konvertieren Sie das Abfrageergebnis-Array in das gewünschte Format in PHP und geben es mit js im Vordergrund in HTML aus
某草草
某草草 2017-06-07 09:23:20
0
3
739

Prüfungstyptabelle jx_exam_type, Inhalte können im Hintergrund hinzugefügt werden

Prüfungsergebnistabelle jx_result, Inhalte können im Hintergrund hinzugefügt werden

Die Prüfungs-ID in der Ergebnistabelle der Zwischenprüfung entspricht der ID in der Tabelle der Prüfungstypen, d. h., ob die hinzugefügte Punktzahl zur Zwischenprüfung oder zur Abschlussprüfung gehört

Dann fragen Sie mit PHP ab

$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);

Das Ausgabeformat ist wie folgt

[
    {
        "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"
    }
]

Bitte sagen Sie mir, wie ich das obige JSON-Ausgabeformat in das folgende ändern kann

{
    "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"
        }
    ]
}

Nachdem Sie auf das obige Format umgestellt haben, geben Sie es an der Rezeption aus und geben Sie es über JS in HTML aus
(Vielleicht stimmt etwas mit dem Format, das ich schreiben möchte, nicht, aber die allgemeine Bedeutung besteht darin, die Originaldaten nach exam_id zu klassifizieren und dann ausgeben)

Ich lerne gerade und verstehe viele Dinge nicht sehr gut. Bitte geben Sie mir einen Rat. Vielen Dank

某草草
某草草

Antworte allen(3)
女神的闺蜜爱上我

这是我理解的架构,這樣前端應該可以遍歷到

while ($row = $result->fetch_assoc()) {
    $scorearr = array("type" => $row["type"], "score" => $row["type"], "exam_id" => $row["exam_id"]);
    if (isset($arr[$row["exam_id"]])) {
        $arr[$row["exam_id"]]["exam_id"][] = $scorearr;
    } else {
        $arr[$row["exam_id"]]["title"] = $row["title"];
        $arr[$row["exam_id"]]["etime"] = $row["etime"];
        $arr[$row["exam_id"]]["exam_id"][0] = $scorearr;
    }
}

$result = array();
foreach($arr as $val) {
    $result[] = $val;
}
echo $json_encode($result)
阿神

应该是少包了一层,可以遍历一下你的数组,然后就可以得到你想要的了,然后在json转码就可以了

滿天的星座

你取数据和处理数据的逻辑有问题,不过你这种的话也可以写

<?php
$str = '[
    {
        "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"
    }
]';

$arr = json_decode($str,true);

$result = [];
$examId = [];
foreach($arr as $key=>$val){

    if(!isset($result[$val['exam_id']])){
        $result[$val['exam_id']]['title'] = $val['title'];
        $result[$val['exam_id']]['etime'] = $val['etime'];
    }

    $result[$val['exam_id']]['exam_id'][] = array("type"=>$val['type'],"score"=>$val['score'],"exam_id"=>$val['exam_id']);

}


echo json_encode(array_values($result));

不过你这种取数据的方式不建议,如果数据复杂点 量大点,处理起来就会麻烦

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage