Php 更改RESTAPI的响应格式

Php 更改RESTAPI的响应格式,php,json,api,Php,Json,Api,我正在用PHP处理RESTAPI响应。 以下是生成响应的我的后端: $query = $this->db->query("SELECT some_params from some_table "); $result = $query->result(); foreach($result as $row){ $obj[] = array( 'title' => $row['title'], 'price'

我正在用PHP处理RESTAPI响应。 以下是生成响应的我的后端:

  $query = $this->db->query("SELECT some_params from some_table ");
  $result = $query->result();  

  foreach($result as $row){
     $obj[] = array(
          'title' => $row['title'],
          'price' => $row['price'],
     );
  }
  print_r(json_encode($obj));
有了它,我得到了以下响应:json对象的数组

[
  {
    "title":"Marketing",
    "price":"0"
  },
  {
    "title":"SAP B1",
    "price":"10"
  }
]

我想做的是返回一个新对象,如下所示:


有人知道我该如何实现这一点吗?谢谢

您可以很容易地拥有一个类或函数来为您实现这一点。下面这样的事情应该会有所帮助

// provided you are using php > 7 . otherwise parmas
// can become $data, $apiversion ( without typecasting )
function api_reponse(array $data, string $apiVersion)
{
   return json_encode([
       'apiVersion' => $apiVersion,
       'data'       => $data
   ])
}
然后你可以使用

  $query = $this->db->query("SELECT some_params from some_table ");
  $result = $query->result();  

  foreach($result as $row){
     $obj[] = array(
          'title' => $row['title'],
          'price' => $row['price'],
     );
  }

  print_r( api_response($obj, '2.0') );

您所说的是无效的JSON。一个有效的版本将与您已有的版本完全相同,只是将一个级别嵌套在另一个(关联)数组中。@PatrickQ谢谢您的回答!让我看看我是否拿到了。。。。我可以在第二个例子中提出的结构中使用第一个例子中的对象数组,是吗?基本上是的。
  $query = $this->db->query("SELECT some_params from some_table ");
  $result = $query->result();  

  foreach($result as $row){
     $obj[] = array(
          'title' => $row['title'],
          'price' => $row['price'],
     );
  }

  print_r( api_response($obj, '2.0') );