Json响应查询

Raj*_*pal 5 php mysql json

我现在正致力于从下表中的数据中获取Json响应

在此输入图像描述

通过使用以下查询:

$sql = "select * from subject where subject_name = 'maths'";

$result =  mysqli_query($conn,$sql);

    while($row = mysqli_fetch_array($result))
    {
    $data = new stdClass();
    $subject_name = $row['subject_name'];
    $unit = $row['unit'];
    $unit_name = $row['unit_name'];

    $data->subject_name=$subject_name;

    $emparray[] = array('unit' => $unit,
                        'unit_name' => $unit_name,
                        );

     $data->units=$emparray;
    }

echo json_encode(array($data));
Run Code Online (Sandbox Code Playgroud)

我可以得到Json的回复:

在此输入图像描述

现在我想要的是整体科目而不使用where子句(其中subject_name ='maths')

我需要的Json o/p如下:

在此输入图像描述

Sum*_*ker 4

您可以通过以下代码将subject_name的结果分组到PHP数组中.

$sql    = "select * from users";
Run Code Online (Sandbox Code Playgroud)

要么

$sql    = "select subject_name,unit,unit_name from users";
Run Code Online (Sandbox Code Playgroud)

PHP代码

$result =  mysqli_query($conn,$sql);
$data   = array();

function search($subject){
  global $data;
  foreach ($data as $key => $value) {
    if (isset($value['subject_name']) && $value['subject_name']==$subject) {
        return $key;
      }
  }
 return false;
}

while($row = mysqli_fetch_assoc($result)){
  $res = search($row['subject_name']);
  if ($res===false) {
    array_push($data, array(
            'subject_name' =>$row['subject_name'],
            'units'=>array($row)
        )
    );
  }else{
    array_push($data[$res]['units'], $row);
  }
}

echo json_encode($data);
Run Code Online (Sandbox Code Playgroud)

现在,您可以从上面的代码中获取JSON格式.