如何在 php 中格式化 json 响应

How to format a json response in php

我是 php 的新手,正在尝试 return 在特定结构中的 json 响应。到目前为止,这是我尝试过的:

$response = array();

if ($con) {
  $sql = "select * from admission_view";
  $result = mysqli_query($con, $sql);
  if ($result) {
    $x = 0;
    while ($row = mysqli_fetch_assoc($result)) {
      $response[$x]['id'] = $row['id'];
      $response[$x]['name'] = $row['name'];
      $response[$x]['isActive'] = $row['isActive'];
      $response[$x]['branchId'] = $row['branchId'];
      $response[$x]['branch'] = $row['branch'];
      $response[$x]['customerGroupId'] = $row['customerGroupId'];
      $response[$x]['customerGroup'] = $row['customerGroup'];
      $response[$x]['orderNo'] = $row['orderNo'];
      $x++;
    }
    echo json_encode($response, JSON_PRETTY_PRINT);
  }
} else {
  echo "Connection error";
}

上面的代码 return 这个响应:

但是,我不想 return 将“branchId”和“branch”作为单独的属性,而是想将它们的值传递到 branchObject 中,这样 branch.id == “branchId” 和branch.name == “分支”。我的意思是,我如何 return 以下结构中的响应:

这是我的数据库的样子: 我怎样才能做到这一点?

您要求我们不确定数据库结果是否 returns 但正如 nice_dev 指出的那样,您需要这样的东西:

$response = [];

if ($con) {
  $sql = "select * from admission_view";
  $result = mysqli_query($con, $sql);
  if ($result) {
    $x = 0;
    while ($row = mysqli_fetch_assoc($result)) {
      $response[$x]['id'] = $row['id'];
      $response[$x]['name'] = $row['name'];
      $response[$x]['isActive'] = $row['isActive'];
      $response[$x]['branch']['id'] = $row['branchId'];
      $response[$x]['branch']['name'] = $row['branch'];
      $response[$x]['customerGroup']['id'] = $row['customerGroupId'];
      $response[$x]['customerGroup']['name'] = $row['customerGroup'];
      $response[$x]['customerGroup']['orderNo'] = $row['orderNo'];
      $x++;
    }
    echo json_encode($response, JSON_PRETTY_PRINT);
  }
} else {
  echo "Connection error";
}