gpt4 book ai didi

php - 在 PHP 中从 SQL 结果构造一个复杂的 JSON 对象

转载 作者:行者123 更新时间:2023-11-29 07:50:54 25 4
gpt4 key购买 nike

我有一个包含许多表的数据库。一张表代表产品,另一张表代表类别。一种产品可以属于多个类别。因此,当我请求数据库显示产品及其类别时,我当然会检索每个产品有多少类别的行。例如结果将是

product_name|category      |city
Test1 |cinema |paris
Test1 |entertainment |paris
Test1 |Other |paris
Test2 |Food |new york
Test2 |Restaurant |new york
Test2 |Night |new york

我想做的是使用 PHP 脚本为每个产品名称创建一个 JSON 对象,如下所示:

    [
{
"product_name": "Test1",
"categorie": [
"cinema",
"entertainment",
"Other"
],
"city": "paris"
},
{
"product_name": "Test2",
"categorie": [
"Food",
"Restaurant",
"Night"
],
"city": "new york"
}
]

当我尝试使用 json_encode 但没有成功时,我得到了重复的行。感谢您的帮助

最佳答案

您需要在 json_encode 之前重新排序数据

如果 $rows 是你的数据库的响应,你必须去 throw

$data = [];
foreach($rows as $row) {
$name = $row['product_name'];
if(!isset($data[$name])) {
$data[$name] = [
'product_name' => $name,
'city'=>$row['city'],
'categories'=>[]
];
}
$data[$name]['categories'][] = $row['category'];
}
json_encode(array_values($data)); //this is what you want

就是这样!也许您需要 while ($row=mysqli_fetch_row($result)) 而不是 foreach,具体取决于您使用的 sql 查询生成器。但想法是一样的

关于php - 在 PHP 中从 SQL 结果构造一个复杂的 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26445794/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com