【发布时间】:2015-09-11 20:22:05
【问题描述】:
我有一个 Laravel 连接数据库查询,它返回给我:
[
{
"post_id": 28,
"site_id": 16,
"url": "http://something.com",
"title": "Website title",
"post_created_at": "2015-07-06 02:40:01",
"post_updated_at": "2015-09-08 22:33:20",
"tag_map_id": 11,
"tag_id": 9,
"tag_name": "dog"
},
{
"post_id": 28,
"site_id": 16,
"url": "http://something.com",
"title": "Website title",
"post_created_at": "2015-07-06 02:40:01",
"post_updated_at": "2015-09-08 22:33:20",
"tag_map_id": 12,
"tag_id": 10,
"tag_name": "cat"
}
]
因此可以有多个具有相同 post_id 的结果,但一篇文章也可以有多个标签。
我想要的是将这些多个结果合并到一个 JSON 对象中,该对象包含数组中所有与标签相关的内容。所以每个 post_id 应该只有一个 JSON 对象。像下面的例子:
[
{
"post_id": 28,
"site_id": 16,
"url": "http://something.com",
"title": "Website title",
"post_created_at": "2015-07-06 02:40:01",
"post_updated_at": "2015-09-08 22:33:20",
"tag_map_id": [11, 12],
"tag_id": [9, 10],
"tag_name": ["dog", "cat"]
}
]
如何在 PHP 中实现这种合并?
【问题讨论】:
-
老实说,问题是我什至不知道从哪里开始。我试图将 JSON 对象转换为 PHP 数组并在那里进行合并,但我不确定这是否是最好的方法......我也不确定你是否可以在查询中实现想要的结果阶段而不是之后??
-
从这些开始:
json_encode和json_decode。它们会将您的 JSON 字符串转换为数组,因此您可以使用 PHP 内置函数更轻松地操作它们的元素,然后再次将它们转换为 JSON。试试看,告诉我们你得到了什么。