我有三张桌子: 人 和 利益 和 Persons_Interests
有20个人的兴趣和人格。 每个人都可以有0,1个或多个兴趣。
我不知道如何获得每个人的每个兴趣所有人,并用PHP将其编码为json。
我还希望通过PersonID从我的sql数据库中获取带有预准备语句的结果。
有谁能告诉我如何解决这个问题?
我的问题是json_encode不会打印每个人的兴趣。
谢谢
答案 0 :(得分:0)
如果您的SQL看起来像这样:
select p.name, i.name from persons as p
outer join persons_interests as pi on p.id = pi.person_id
left join interests as i on pi.interest_id = i.id
和$personsInterests
是该查询的结果,您应该能够使用foreach
循环来构建$result
数组
$result = [];
foreach ($personsInterests as $interest) {
if (isset($result[$interest[0]])) {
$result[$interest[0]][] = $interest[1];
} else {
$result[$interest[0]] = isset($interest[1]) ? [$interest[1]] : [];
}
}
然后json_encode($result)
答案 1 :(得分:-1)
按PersonID订购你的sql。在获取行之后,让我们认为你有这样的行:
PersonID | InterestID
1 | 1
1 | 2
1 | 4
2 | 3
2 | 1
2 | 2
3 | 5
对于这个非常简单的示例,您将遍历数组并重新排列新数组中的数据
sortedArray= [];
Foreach(result as row) {
If(empty(sortedArray[row['PersonID']])) {
sortedArray[row['PersonID']]['Interests'][] = row['InterestID'];
}
}
这是一个简单的例子。这取决于你想要的最终数组看起来像。