php中嵌套注释的JSON数组
我正在制作一个面向帖子的网站,其中包含主题及其相应的子主题。在主题页面上,它非常类似于Reddit评论系统(嵌套评论或分层评论)。我正在用php和mysql制作这个应用程序。 以下是我的mysql表结构: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
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..
]
}