我有一个带有相应“评论”表的“帖子”表(每个“评论”行都有一个'post_id',它与'post'表格相关)。
这是我的函数,它从我的查询中回复了我的JSON响应:
function echo_json_result($result) {
$arr = array();
while($row = mysql_fetch_assoc($result)) {
$arr[] = $row;
}
echo json_encode($arr);
}
这目前吐出一大阵。
为了提高响应的可读性,我希望将与这些“帖子”相关的“评论”作为嵌套数组返回..
我可以想到一种方法来做到这一点。创建两个查询,一个用于注释,另一个用于与注释相关的所有注释。然后,将包含所有注释的关联数组添加到notes数组,然后添加json_encode。
这是最好的方法吗?
答案 0 :(得分:1)
尝试这样的事情,但帖子需要在你的评论之前出现在结果中:
function echo_json_result($result) {
$arr = array();
while ($row = mysql_fetch_assoc($result)) {
if( $row['post_id'] != "" )
{
if( array_key_exists("comments", $arr['post_id']) )
{
array_push($arr['post_id']['comments'], $row);
}
else
{
$arr['post_id']['comments'] = array($row);
}
}
else
{
$arr[$row['id']] = $row;
}
}
echo json_encode($arr);
}
答案 1 :(得分:0)
这是ORM可以做的工作。我举例说a bunch of class做的工作没有深度限制。提供了映射字段和所需嵌套数组的数组参数:
例如:
SELECT article.name,article.id as id,comment.id as comment_id,comment.value FROM article JOIN comment on comment.article_id = article.id
和相应的映射数组:
$mapping = [ 'id', 'name', 'comments' => ['id','value']];