php中嵌套注释的JSON数组

时间:2014-02-03 18:13:33

标签: php json

我正在制作一个面向帖子的网站,其中包含主题及其相应的子主题。在主题页面上,它与Reddit Comment系统非常相似(嵌套注释或分层注释)。我在php和mysql中创建这个应用程序。 这是我的mysql表结构:

comment_id | post_id | parent_id | text
     1           1         0         hi
     2           1         1         hello
     3           1         2         hello
     4           1         2         hello test
对于父评论,

parent_id为0。

我显示嵌套注释的PHP代码是:

$query = $conn->prepare("SELECT message,comment_id from comments where parent_id=0");
$query->execute();
$data = $query->fetchAll();
$output = array();
getComments(0,$conn);
function getComments($parent,$conn)
    {
        try
        {
        $query = $conn->prepare("SELECT `message`,`comment_id` FROM comments WHERE parent_id = $parent and post_id = 1");
        $query->execute();
        $data = $query->fetchAll();
        }
        catch(Exception $e)
        {
            echo "Error is:" . $e->getMessage();
        }
        if (count($data)>0)
        {
            echo "<ul>\n";
            foreach($data as $value)
              echo "<li>", $value["message"], getComments($value["comment_id"],$conn), "</li>\n";
            echo "</ul>\n";
        }
        else
            echo ($parent === 0) ? 'No Comments!' : "";
    }

以分层格式显示评论工作正常。但我想要的是生成多维JSON数组的注释而不是显示它们。我知道我需要编辑给定的代码

echo "<li>", $value["message"], getComments($value["comment_id"],$conn), "</li>\n";

生成json输出,如

{
 "data":
    [
     {
      "comment_id" : "1",
      "comment_text" : "hi"
      "replies":
        [
         {
           "comment_id" : "2"
           "comment_text" : "hello"
           "replies" :
              ---
                --- so on 
         }
        ] 
     }

     so on..
    ]

}

请帮助我。

0 个答案:

没有答案