Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php中嵌套注释的JSON数组_Php_Json - Fatal编程技术网

php中嵌套注释的JSON数组

php中嵌套注释的JSON数组,php,json,Php,Json,我正在制作一个面向帖子的网站,其中包含主题及其相应的子主题。在主题页面上,它非常类似于Reddit评论系统(嵌套评论或分层评论)。我正在用php和mysql制作这个应用程序。 以下是我的mysql表结构: comment_id | post_id | parent_id | text 1 1 0 hi 2 1 1 hello 3 1

我正在制作一个面向帖子的网站,其中包含主题及其相应的子主题。在主题页面上,它非常类似于Reddit评论系统(嵌套评论或分层评论)。我正在用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
父注释的父\u 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\u encode($data)
应该可以做到这一点……我知道这一点,但我无法找到生成上述所需json的逻辑。因为注释-回复-注释系统可以达到N级。因此,构建一个与所需结构相对应的PHP数组,然后对其进行编码。您永远不会直接处理构建json的问题。那是毫无意义/徒劳/危险的。您总是使用本机数据结构,然后使用json_encode/json_decoded来回转换。另外,请注意,您的json定义不正确。在开始构建嵌套数组之前,请使用类似的工具验证正确的结果。
echo "<li>", $value["message"], getComments($value["comment_id"],$conn), "</li>\n";
{
 "data":
    [
     {
      "comment_id" : "1",
      "comment_text" : "hi"
      "replies":
        [
         {
           "comment_id" : "2"
           "comment_text" : "hello"
           "replies" :
              ---
                --- so on 
         }
        ] 
     }

     so on..
    ]

}