php 评论递归,用于评论和回复PHP应用程序的递归函数

我难以概念化递归函数以附加对评论的回复,对回复的回复,对回复的回复的回复等.

这是我的评论表:

呈现时应该看起来像这样:

就目前而言,我可以渲染每个与article_id相关的注释(当然,不包括那些非NULL的注释):

$comments = $commentClass->fetch_article_comments($article_id);

foreach($comments as $comment) {

$comment_id = $comment['comment_id'];

$member_id = $comment['member_id'];

$comment_text = $comment['comment_text'];

$comment_timestamp = timeAgo($comment['comment_timestamp']); //get time ago

//render comment using above variables

}

现在我假设我需要在上面的foreach语句的末尾添加一个递归函数,但我还没有想出任何远程成功的附加评论回复和每个回复的回复.

任何人都可以帮助我实现这个目标,或者让我指出正确的方向.我并不完全熟悉递归函数.我已经完成了对互联网的扫描,并在stackoverflow上寻找有用的东西,但还没有找到任何有用的东西.

我确实遇到过this post,建议使用分层数据库系统,但我想我更喜欢使用php递归函数.

谢谢.

编辑

通过使用以下答案,我只返回结果第一个评论,然后迭代并无限期地显示一个评论.我弄不清楚为什么?

我的PHP:

function display_comments($article_id, $parent_id=0, $level=0) {

global $comment;

global $member;

global $signed_in;

global $username;

$comments = $comment->fetch_article_comments($article_id, $parent_id);

foreach($comments as $data) {

$comment_id = $data['comment_id'];

$c_member_id = $data['member_id'];

$comment_text = $data['comment_text'];

$comment_timestamp = timeAgo($data['comment_timestamp']); //get time ago

$member_data = $member->fetch_member_data($c_member_id);

$c_member_username = $member_data['member_username'];

$c_member_avatar = $member_data['member_avatar'];

//render HTML here

$parent = $data['comment_parent'];

display_comments($article_id, $parent, $level+1);

}//end foreach

}//end display_comments()

和我的PDO查询:

public function fetch_article_comments($article_id, $parent_id) { //$page = (int)(!isset($_GET['page'])) ? 0 : $_GET['page'];

if ($parent_id > 0) {

$parent_id = "= $parent_id";

} else {

$parent_id = "IS NULL";

}

$query = $this->db->prepare("SELECT * FROM `comments2` WHERE `article_id` = $article_id AND `comment_parent` $parent_id ORDER BY `comment_timestamp` DESC");

try{

$query->execute();

$comments = $query->fetchAll(); //returns an array

$query->closeCursor();

return $comments;

} catch(PDOException $e){

die($e->getMessage());

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值