循环结束后回显而不是循环

时间:2016-02-07 14:58:38

标签: php loops mysqli echo forum

我正在编写自己的论坛(出于学习原因)并且正在尝试找到以下解决方案:

我有存储在数据库中的论坛帖子,当我想显示这些帖子时,我首先将mySQL中的每个帖子放入一个数组($ posts [] [])然后循环遍历这些数组以将它们输出到htmlpage:

if (count($posts) > 0) {
    for ($x = 0; $x < count($posts); $x++) {
        echo '
        <div class="post-header">' . $posts[$x][3] . '<text style="float:right">#' . ($x+1) . '</text></div>
        <div class="post">
            <div class="post-user ">';
            if(login_check($mysqli) && (permission_check($mysqli) == 2 || permission_check($mysqli) == 3 || $username == $posts[$x][5])) {
                echo '<a href="posting.php?topicID='. $topicID . '&forumID=' . $forumID . '&postID=' . $posts[$x][1] . '&mode=edit">Edit</a><br>';
            }
            echo '<a href="../profile/?profile="' . $posts[$x][5] . '">' . $posts[$x][5] . '</a>
            <br>
            </div>
            <div class="post-text">' . $bbcode->parse($posts[$x][4]) . '</div>
        </div><br>';
    }
}

虽然这完全没问题但我希望回声仅在循环结束后显示。目前这个回声实时和每个论坛帖子都被添加到html中,直到循环结束,看起来它的加载速度非常慢。

2 个答案:

答案 0 :(得分:1)

请试试这个

$responseString = '';
if (count($posts) > 0) {
    for ($x = 0; $x < count($posts); $x++) {
        $responseString .= '
        <div class="post-header">' . $posts[$x][3] . '<text style="float:right">#' . ($x+1) . '</text></div>
        <div class="post">
            <div class="post-user ">';
            if(login_check($mysqli) && (permission_check($mysqli) == 2 || permission_check($mysqli) == 3 || $username == $posts[$x][5])) {
                $responseString .= '<a href="posting.php?topicID='. $topicID . '&forumID=' . $forumID . '&postID=' . $posts[$x][1] . '&mode=edit">Edit</a><br>';
            }
            $responseString .= '<a href="../profile/?profile="' . $posts[$x][5] . '">' . $posts[$x][5] . '</a>
            <br>
            </div>
            <div class="post-text">' . $bbcode->parse($posts[$x][4]) . '</div>
        </div><br>';
    }
}
echo $responseString;

答案 1 :(得分:1)

回答你的问题:

            if (count($posts) > 0) {
                $sexy = '';
                for ($x = 0; $x < count($posts); $x++) {
                    $sexy .='
                    <div class="post-header">' . $posts[$x][3] . '<text style="float:right">#' . ($x+1) . '</text></div>
                    <div class="post">
                        <div class="post-user ">';
                        if(login_check($mysqli) && (permission_check($mysqli) == 2 || permission_check($mysqli) == 3 || $username == $posts[$x][5])) {
                            $sexy .='<a href="posting.php?topicID='. $topicID . '&forumID=' . $forumID . '&postID=' . $posts[$x][1] . '&mode=edit">Edit</a><br>';
                        }
                        $sexy .='<a href="../profile/?profile="' . $posts[$x][5] . '">' . $posts[$x][5] . '</a>
                        <br>
                        </div>
                        <div class="post-text">' . $bbcode->parse($posts[$x][4]) . '</div>
                    </div><br>';
                }
                echo $sexy;
            }

这将在循环结束时回显。但是如果你认识到加载速度慢,那就去找&#34;分页&#34;您的结果,例如每页只显示50个,并在底部显示一些导航。另一种可能性是增加责任并在一旦到达时显示所有内容,使用flush:http://php.net/manual/de/function.flush.php