suchen

Heim  >  Fragen und Antworten  >  Hauptteil

javascript – So konvertieren Sie das Abfrageergebnis-Array in das gewünschte Format in PHP und geben es mit js im Vordergrund in HTML aus

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

某草草某草草2785 Tage vor787

Antworte allen(3)Ich werde antworten

  • 女神的闺蜜爱上我

    女神的闺蜜爱上我2017-06-07 09:25:20

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

    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)

    Antwort
    0
  • 阿神

    阿神2017-06-07 09:25:20

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

    Antwort
    0
  • 滿天的星座

    滿天的星座2017-06-07 09:25:20

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

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

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

    Antwort
    0
  • StornierenAntwort