PHP JSON编码多维SQL响应

时间:2016-12-06 18:06:59

标签: php json

我有三张桌子: 人 和 利益 和 Persons_Interests

有20个人的兴趣和人格。 每个人都可以有0,1个或多个兴趣。

我不知道如何获得每个人的每个兴趣所有人,并用PHP将其编码为json。

我还希望通过PersonID从我的sql数据库中获取带有预准备语句的结果。

有谁能告诉我如何解决这个问题?

我的问题是json_encode不会打印每个人的兴趣。

谢谢

2 个答案:

答案 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'];
    }
}

这是一个简单的例子。这取决于你想要的最终数组看起来像。