【问题标题】:Creating a multi-dimensional json based on mysql query基于mysql查询创建多维json
【发布时间】:2013-06-29 22:03:39
【问题描述】:

之前,我曾经将结果集(一维)编码为 json。现在,我需要创建一个基于多个表的多维json数据结构。我从来没有这样做过,我需要一些帮助。

我的桌子:

  • 用户(一对多)
  • 电话(多对一)
  • 地址(多对一)
  • 名字(多对一)

我需要为每一行开发具有这种结构的 JSON 响应:

  • user_id: user_id
  • 电话:phone1、phone2、phone3 等。
  • 地址:address1、address2、address3 等
  • 名称:name1、name2、name3 等

我该怎么做?

例如,我想我可以为每个表(电话、地址、姓名)创建 3 个查询,并为每个表返回一个数据集,然后将每个结果集编码为 json。现在我的问题是:这样做会是正确的方法吗?如何将每个子 json 添加到我的父 json 中?

$userJson = json_encode($user_id_resultSet);
$phonesJson = json_encode($phones_resultSet);
$addressesJson = json_encode($addresses_resultSet);
$namesJson = json_encode($names_resultSet);
//how do I combine them into one row?

【问题讨论】:

  • 在将数据编码为 JSON 之前将它们组合起来
  • 您是在谈论合并结果集(执行array_merge)还是创建某种返回一个结果集的查询?

标签: php mysql json


【解决方案1】:
$combined = array(
  "user" => $user_id_resultSet,
  "phones" => $phones_resultSet,
  "addresses" => $addresses_resultSet,
  "names" => $names_resultSet
);

echo json_encode($combined, JSON_PRETTY_PRINT); // just for neat output.

【讨论】:

  • 这太棒了。怎么在循环中东它?当我有多个用户时(所以应该有多行?)
  • @Andrew - 这只是基本的数组操作,试一试!尝试一个空数组$users = array();,然后使用$users[] = array( ... ); 向其中添加新内容。然后,您可以将$users 添加到发送到 JSON 编码器的组合数组中。
猜你喜欢
  • 2013-06-08
  • 2016-12-07
  • 2013-09-02
  • 2017-06-18
  • 1970-01-01
  • 2017-06-12
  • 2016-01-26
  • 2023-04-01
  • 1970-01-01
相关资源
最近更新 更多