Автоматизированные вложенные циклы - PullRequest
0 голосов
/ 11 июня 2019

Я строю систему комментариев и пытаюсь создать систему Reddit esque - комментарии не ограничены заранее заданным значением. Однако я не могу автоматизировать этот процесс, у меня в голове не работает логика.

Для отображения комментариев я перебираю отображаемые комментарии, которые не являются дочерними для любых других комментариев. Затем я запрашиваю функцию для поиска дочерних элементов каждого родительского комментария на каждой итерации. Проблема в том, что единственный способ для меня иметь систему комментариев бесконечности - это постоянно помещать циклы в циклы.

Я что-то упустил? Я надеюсь, что смогу создать функцию, которая может содержать цикл внутри цикла, а затем случайным образом сгенерировать имя переменной, чтобы убедиться, что оно никогда не перезаписывается ... но если я не в курсе, тогда кто-то может указать мне правильное направление.

$iterator = 0; //Used to ensure the ID's remain unique 
$articleID = $_GET['POST']; //Get article ID from the URL
$newsArticleComments = getComment($articleID); // Get news article where ID matches ID found in URL
$newsArticleCommentsJSON = json_decode($newsArticleComments); // Decode JSON returned by getNewsArticleFromID function

if ($newsArticleComments != "[]") {
    for ($i = 0; $i < sizeof($newsArticleCommentsJSON); $i++) {
        if ($newsArticleCommentsJSON[$i]->CommentReply <= 0) {
            if ($newsArticleCommentsJSON[$i]->CommentApproved >= 1) {
                displayReply($newsArticleCommentsJSON, $i, FALSE, $iterator);
                replyForm(true, $iterator, $newsArticleCommentsJSON, $i);
                $iterator++;
                //Get Comment Replies for each sub comment (Here it is checked)
                $newsArticleCommentsReplies = getCommentReplies($articleID, $newsArticleCommentsJSON[$i]->CommentId); // Get news article where ID matches ID found in URL
                $newsArticleCommentsRepliesJSON = json_decode($newsArticleCommentsReplies); // Decode JSON returned by getNewsArticleFromID function
                if ($newsArticleCommentsReplies != "[]") {
                    for ($j = 0; $j < sizeof($newsArticleCommentsRepliesJSON); $j++) {
                        displayReply($newsArticleCommentsRepliesJSON, $j, true, $iterator);
                        replyForm(true, $iterator, $newsArticleCommentsRepliesJSON, $j);
                        $iterator++;
                    }
                }
            }
        }
    }
} else {
    noCommentsDisplay();
}

Вот так я показываю один ответ на комментарий ... Я уверен, что есть более эффективный способ сделать это без необходимости многократно кодировать несколько циклов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...