0

好的,我是新来的,我整天都在努力解决这个问题,我有两个函数一个调用另一个,但我的函数只返回最后一个值,例如29当它应该返回多个值时。想知道如何解决这个问题,以便我的函数返回所有值。

这是我的PHP代码。

function parent_comments(){
    if(articles_parent_comments_info($_GET['article_id']) !== false){
        foreach(articles_parent_comments_info($_GET['article_id']) as $comment_info){
            $comment_id = filternum($comment_info['comment_id']);
            reply_comment_count($comment_id);
        }
    }
}

function reply_comment_count($parent_id){
    if(articles_reply_comments_info($_GET['article_id']) !== false){
        foreach(articles_reply_comments_info($_GET['article_id']) as $reply_info){
            $comment_id = filternum($reply_info['comment_id']);
            $reply_id = filternum($reply_info['parent_id']);

            if($parent_id === $reply_id){
                reply_comment_count($comment_id);
            }   
        }
    }

    return $comment_id;
}
4

1 回答 1

0

您使用递归返回您的$comment_id. 如果我了解您的需求,您希望将每个回复 ID 链接到一个文章 ID。

reply_comment_count您返回时$comment_id,但由于它被递归使用并且您不保留返回的前一个 id,您只会得到最后一个。

如果你想获得很多$comment_id而不是只有一个,我建议你返回一个数组,$comment_id每次找到一个时你都会在其中推送。像这样的东西:

func parent_comments(){
    loop in articles to get comment_id {
         count_array = reply_comment_count(comment_id, count_array)
    }
}

func reply_comment_count(parent_id, count_array) {
    loop to get id linked to parent_id {
        if id is an article {
           count_array = reply_comment_count(id, count_array) #recursive call
        }
        else {
          count_comment = count comment linked
          count_array.push(count_comment)
        }
    }
    return count_array # when you return your count_array due to recursive call it will be filled with every count, and not only the last
}

我希望这种伪语言对你来说很清楚。但是由于您只返回找到的最后一个计数,因此您将只有这个。

于 2012-06-10T09:09:49.140 回答