php怎么获取评论下面的所有评论
-
要获取评论下面的所有评论,你可以利用递归的方式逐层遍历评论树。下面是一个使用PHP语言的示例代码,可以帮助你实现这个功能:
“`php
1, ‘parent_id’ => null),
array(‘id’ => 2, ‘parent_id’ => 1),
array(‘id’ => 3, ‘parent_id’ => 1),
array(‘id’ => 4, ‘parent_id’ => 2),
array(‘id’ => 5, ‘parent_id’ => 2),
array(‘id’ => 6, ‘parent_id’ => 3),
array(‘id’ => 7, ‘parent_id’ => null),
array(‘id’ => 8, ‘parent_id’ => 7),
array(‘id’ => 9, ‘parent_id’ => 8),
);// 逐层遍历评论树
function getCommentsByParentId($comments, $parentId = null, $depth = 0) {
$result = array();foreach ($comments as $comment) {
$id = $comment[‘id’];
$parent_id = $comment[‘parent_id’];if ($parent_id == $parentId) {
$comment[‘depth’] = $depth; // 添加一个depth字段表示层级
$result[] = $comment;$children = getCommentsByParentId($comments, $id, $depth + 1);
$result = array_merge($result, $children);
}
}return $result;
}// 调用函数获取所有评论
$allComments = getCommentsByParentId($comments);// 输出所有评论的id和层级
foreach ($allComments as $comment) {
echo “id: ” . $comment[‘id’] . “, depth: ” . $comment[‘depth’] . “\n”;
}
“`上述代码中,我们通过递归方式遍历了评论树,将每个评论以数组形式存储,并添加了一个`depth`字段表示层级。最后,我们通过遍历输出了所有评论的id和层级。
请根据你实际的评论数据结构进行相应的修改。希望对你有帮助!
2年前 -
在PHP中,获取评论下面的所有评论可以通过以下步骤实现:
1. 连接数据库:首先,使用 PHP 的 MySQLi 或 PDO 扩展来连接到你的评论数据库。
2. 查询评论:通过使用 SELECT 语句从评论表中获取所有的父评论。父评论是那些没有父级评论的评论。
3. 循环遍历父评论:通过使用循环,遍历每个父评论,并按照评论 ID 查询子评论。
4. 查询子评论:对于每个父评论,使用 SELECT 语句从评论表中获取与该父评论关联的子评论。你可以使用父评论的 ID 与子评论的 parent_id 列进行匹配。
5. 输出评论:将父评论和对应的子评论输出到页面中。可以使用 HTML 标记和 CSS 样式来格式化你的评论显示。
以下是一个示例代码,演示如何获取评论下面的所有评论:
“`php
connect_error) {
die(“连接失败: ” . $conn->connect_error);
}// 查询父评论
$sql = “SELECT * FROM comments WHERE parent_id IS NULL”;
$result = $conn->query($sql);if ($result->num_rows > 0) {
// 遍历父评论
while ($row = $result->fetch_assoc()) {
echo “父评论:”.$row[“comment”].”
“;// 查询子评论
$parent_id = $row[“id”];
$sql_child = “SELECT * FROM comments WHERE parent_id = $parent_id”;
$result_child = $conn->query($sql_child);if ($result_child->num_rows > 0) {
// 遍历子评论
while ($row_child = $result_child->fetch_assoc()) {
echo “子评论:”.$row_child[“comment”].”
“;
}
} else {
echo “没有子评论。”;
}
}
} else {
echo “没有评论。”;
}$conn->close();
?>
“`上述代码仅为示例,具体的数据库结构和表名需要根据你的实际情况进行修改。通过这种方法,你可以获取评论下面的所有评论,并将其按照父评论和子评论的关系进行显示。
2年前 -
获取评论下面的所有评论可以通过递归的方式来实现。具体操作流程如下:
1、首先,获取一级评论列表。可以从数据库中查询一级评论的数据,或从接口中获取一级评论的数据。
2、遍历一级评论列表,针对每个一级评论,获取其对应的所有子评论。这一步可以通过递归来实现。
3、为了方便处理子评论,可以将每个子评论的数据结构中添加一个字段,表示其父级评论的id。
4、递归获取子评论。针对每个一级评论,调用一个递归函数来获取其所有的子评论。递归函数的步骤如下:
4.1、从数据库中查询或接口中获取当前评论的子评论列表,根据父级评论id进行筛选。
4.2、遍历子评论列表,将每个子评论添加到一个结果数组中。
4.3、对于每个子评论,调用递归函数来获取其所有的子评论,并将其添加到结果数组中。
4.4、返回结果数组。
5、将获取到的一级评论和所有子评论合并成一个评论列表。
下面是一个示例代码,演示如何使用递归函数来获取评论下面的所有评论:
“`php
// 递归函数,用于获取指定评论的所有子评论
function getChildrenComments($commentId, $allComments) {
$children = array();
foreach ($allComments as $comment) {
if ($comment[‘parent_id’] == $commentId) {
$comment[‘children’] = getChildrenComments($comment[‘id’], $allComments);
$children[] = $comment;
}
}
return $children;
}// 获取一级评论列表,可从数据库或接口中获取
$topLevelComments = array(
array(‘id’ => 1, ‘content’ => ‘One-level Comment 1’, ‘parent_id’ => 0),
array(‘id’ => 2, ‘content’ => ‘One-level Comment 2’, ‘parent_id’ => 0)
);// 获取所有评论,包括一级评论和子评论,可以从数据库中查询或接口中获取
$allComments = array(
array(‘id’ => 1, ‘content’ => ‘One-level Comment 1’, ‘parent_id’ => 0),
array(‘id’ => 2, ‘content’ => ‘One-level Comment 2’, ‘parent_id’ => 0),
array(‘id’ => 3, ‘content’ => ‘Child Comment 1’, ‘parent_id’ => 1),
array(‘id’ => 4, ‘content’ => ‘Child Comment 2’, ‘parent_id’ => 1),
array(‘id’ => 5, ‘content’ => ‘Sub-child Comment 1’, ‘parent_id’ => 3)
);// 获取一级评论和子评论
$comments = array();
foreach ($topLevelComments as $comment) {
$comment[‘children’] = getChildrenComments($comment[‘id’], $allComments);
$comments[] = $comment;
}// 打印评论列表
print_r($comments);
“`通过以上步骤,就可以获取评论下面的所有评论,并组织成一个嵌套的数据结构,方便后续处理或展示。当然,具体的实现方式还要根据实际情况进行调整和优化。
2年前