在循环结束后回显而不是在循环时回显
echo after loop finishes rather than while looping
我正在为自己的论坛编写代码(出于学习原因),并试图找到解决以下问题的方法:
我在数据库中存储了论坛 post,当我想显示这些 post 时,我首先将 mySQL 中的每个 post 放入一个数组中($posts[][]) 然后循环遍历这些数组以将它们输出到 html 页面:
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>';
}
}
虽然这运行得很好,但我希望回显仅在循环完成后显示。目前,这会实时回显,每个论坛 post 都会添加到 html 中,直到循环结束,看起来加载速度非常慢。
请试试这个
$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;
回答你的问题:
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;
}
这将在循环结束时回显。但是,如果您发现加载缓慢,请选择 "paging" 您的结果,例如每页仅显示 50 个并在底部显示一些导航。另一种增加责任并在一切到达后展示一切的可能性,带有冲洗:http://php.net/manual/de/function.flush.php
我正在为自己的论坛编写代码(出于学习原因),并试图找到解决以下问题的方法:
我在数据库中存储了论坛 post,当我想显示这些 post 时,我首先将 mySQL 中的每个 post 放入一个数组中($posts[][]) 然后循环遍历这些数组以将它们输出到 html 页面:
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>';
}
}
虽然这运行得很好,但我希望回显仅在循环完成后显示。目前,这会实时回显,每个论坛 post 都会添加到 html 中,直到循环结束,看起来加载速度非常慢。
请试试这个
$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;
回答你的问题:
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;
}
这将在循环结束时回显。但是,如果您发现加载缓慢,请选择 "paging" 您的结果,例如每页仅显示 50 个并在底部显示一些导航。另一种增加责任并在一切到达后展示一切的可能性,带有冲洗:http://php.net/manual/de/function.flush.php