我有一个包含许多表的数据库。一个表代表产品,另一个表代表类别。一种产品可以属于许多类别。因此,当我请求我的数据库显示带有类别的产品时,我当然会检索许多行,每个产品都有多个类别。 例如,结果将是
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但没有成功时,我得到了重复的行。 谢谢你的帮助
答案 0 :(得分:2)
您需要在json_encode
之前重新排序数据如果$ rows是你的数据库的响应,你必须抛出
$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查询构建器。但这个想法是一样的