【问题标题】:How to group array in json php from database如何从数据库中对 json php 中的数组进行分组
【发布时间】:2020-06-12 08:33:14
【问题描述】:

我有这样的源代码:

elseif($postjson['aksi']=='load_Kelas'){
  $data = array();
  $query = mysqli_query($mysqli, "SELECT * FROM t_kelas_kuliah");
  while($row = mysqli_fetch_array($query)){
      $data[] = array(
          'kd_kelas'    => $row['kd_kelas'],
          'kd_matkul'   => $row['kd_matkul'],
          'kd_dosen'    => $row['kd_dosen'],
          'waktu'       => $row['waktu'],
          'ruang'       => $row['ruang'],
          'hari'        => $row['hari'],
      );
  }
  if($query) $result = json_encode(array('success'=>true, 'result'=>$data));
  else $result = json_encode(array('success'=>false));
  echo $result;
}

在离子代码中

async loadKelas() {
    return new Promise(resolve => {
      let body = {
        aksi: 'load_Kelas',
      };

      this.accsPrvds.postData(body, 'proses_api.php').subscribe((kelas: any) => {
          for (let kelaskuliah of kelas.result) {
              this.datakelas.push(kelaskuliah);
          }
          resolve(true);
          console.log(kelas);
      });
    });
  }

结果控制台是

result: (2) […]
​​
0: {…}
​​​
hari: "Senin"    ​​​
kd_dosen: "SPK"
​kd_kelas: "A1157"
​​​kd_matkul: "IFKK1051"
​​​ruang: "B310"
​​​waktu: "09.30 - 12.00"
​​​<prototype>: Object { … }
​​1: {}
​​​hari: "Senin"
​​​kd_dosen: "SPK"
​​​kd_kelas: "A1158"
​​​kd_matkul: "IFKK1051"
​​​ruang: "B310"
​​​waktu: "12.00 - 14.30"

如何按类别“Hari”创建数组然后我有这样的输出

Data = [
  {
    Hari : "Senin",
    Kuliah = [
     { kd_dosen: "SPK", kd_kelas: "A1157", kd_matkul: "IFKK1051", ruang: "B310", waktu: "09.30 - 12.00" },
     { kd_dosen: "SPK", kd_kelas: "A1157", kd_matkul: "IFKK1051", ruang: "B310", waktu: "09.30 - 12.00" }
    ]}
]}

【问题讨论】:

    标签: php mysql json angular


    【解决方案1】:

    尝试替换:

    elseif($postjson['aksi']=='load_Kelas'){
      $data = array();
      $query = mysqli_query($mysqli, "SELECT * FROM t_kelas_kuliah");
      while($row = mysqli_fetch_array($query)){
          $data[] = array(
              'kd_kelas'    => $row['kd_kelas'],
              'kd_matkul'   => $row['kd_matkul'],
              'kd_dosen'    => $row['kd_dosen'],
              'waktu'       => $row['waktu'],
              'ruang'       => $row['ruang'],
              'hari'        => $row['hari'],
          );
      }
      if($query) $result = json_encode(array('success'=>true, 'result'=>$data));
      else $result = json_encode(array('success'=>false));
      echo $result;
    }
    

    用这个:

    elseif($postjson['aksi']=='load_Kelas'){
      $temp = array();
      $data = array();
      $query = mysqli_query($mysqli, "SELECT * FROM t_kelas_kuliah");
      while($row = mysqli_fetch_array($query)){
          $temp[$row['hari']][] = array(
              'kd_kelas'    => $row['kd_kelas'],
              'kd_matkul'   => $row['kd_matkul'],
              'kd_dosen'    => $row['kd_dosen'],
              'waktu'       => $row['waktu'],
              'ruang'       => $row['ruang'],
              'hari'        => $row['hari'],
          );
      };
      foreach($temp as $key => $val){
          $data[] = array(
            "Hari" => $key,
            "Kuliah" => $val
          );
      };
      if($query) $result = json_encode(array('success'=>true, 'result'=>$data));
      else $result = json_encode(array('success'=>false));
      echo $result;
    }
    

    【讨论】:

    • 谢谢你,但下一个问题如何在 html 中显示
    • 您是否使用 javascript 来解析数据?
    • 您可以将这个if($query) $result = json_encode(array('success'=&gt;true, 'result'=&gt;$data)); 更改为if($query) $result = json_encode(array('success'=&gt;true, 'result'=&gt;$data,'rawresult'=&gt;$temp)); 并调用rawresult 而不是result,但返回大小会加倍结果大小跨度>
    • 也许,我不太明白。
    • 如果你使用ajax来解析它:试试:function(data){ newdata = array(); data.forEach(function(item,index){ newdata.push(item.Kuliah); }); }
    猜你喜欢
    • 2019-02-09
    • 1970-01-01
    • 2022-11-17
    • 2016-10-09
    • 2021-09-12
    • 1970-01-01
    • 2013-11-04
    • 2021-05-23
    • 1970-01-01
    相关资源
    最近更新 更多