Я строю систему комментариев и пытаюсь создать систему 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();
}
Вот так я показываю один ответ на комментарий ... Я уверен, что есть более эффективный способ сделать это без необходимости многократно кодировать несколько циклов.