cari

Rumah  >  Soal Jawab  >  teks badan

javascript - Bagaimana untuk menukar tatasusunan hasil pertanyaan ke dalam format yang anda mahu dalam php, dan gunakan js untuk mengeluarkannya ke html di latar depan

Jadual jenis peperiksaan jx_exam_type, kandungan boleh ditambah di latar belakang

Jadual markah peperiksaan jx_result, kandungan boleh ditambah di latar belakang

Id_peperiksaan dalam jadual markah peperiksaan pertengahan penggal sepadan dengan id dalam jadual jenis peperiksaan, iaitu sama ada markah yang ditambah adalah milik pertengahan atau akhir

Kemudian tanya menggunakan 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);

Format output adalah seperti berikut

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

Sila beritahu saya cara menukar format json output di atas kepada format berikut

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

Selepas tukar kepada format di atas, keluarkan ke meja depan, dan keluarkan ke html melalui JS
(Mungkin ada yang tidak kena dengan format yang saya ingin tulis, tetapi maksud umum adalah untuk mengklasifikasikan data asal mengikut exam_id dan kemudian keluarkannya)

Saya sedang belajar, dan saya tidak memahami banyak perkara dengan baik Tolong beri saya nasihat~~Terima kasih

某草草某草草2736 hari yang lalu762

membalas semua(3)saya akan balas

  • 女神的闺蜜爱上我

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

    Ini adalah seni bina yang saya faham, jadi bahagian depan sepatutnya boleh melintasi ke

    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)

    balas
    0
  • 阿神

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

    Ia sepatutnya kurang satu pakej Anda boleh melintasi tatasusunan anda, dan kemudian anda boleh mendapatkan apa yang anda mahu, dan kemudian hanya mengubah kodnya dalam json

    .

    balas
    0
  • 滿天的星座

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

    Ada yang salah dengan logik anda mendapatkan dan memproses data, tetapi anda juga boleh menulis

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

    Namun, kaedah anda mendapatkan data tidak disyorkan Jika data itu rumit dan besar, ia akan menyusahkan untuk diproses.

    .

    balas
    0
  • Batalbalas