在下面的代码中,每次在while循环中,url变量都会增加1。当$i
等于1000时,循环将结束并显示$i
(从1一直到1000)。
如何在每次循环后显示$i
的值,而不是等到最后?
$i = 1;
while($file = file_get_contents('http://example.com?id='.$i)) {
if($i !== 1000) {
echo $i;
}else{
break;
}
$i++;
}
答案 0 :(得分:2)
每次迭代后都需要刷新消息。这样,即使您的请求/响应仍处于待处理状态,您的浏览器也会收到部分信息。
ob_implicit_flush(true);
$i = 1;
while($file = file_get_contents('http://example.com?id='.$i) && $i < 1000)
{
echo $i;
$i++;
ob_flush();
flush();
}
ob_end_flush();
答案 1 :(得分:0)
将echo $i;
移到if()
语句之外:
$i = 1;
while($file = file_get_contents('http://example.com?id='.$i)) {
if($i !== 1000) {
// echo $i;
}else{
break;
}
echo $i;
$i++;
}
此方案肯定更适合for()
循环而不是while()
...
答案 2 :(得分:0)
PHP发生在服务器上。要立即查看$ i的每个值,您需要创建服务器:
- 做它的事情 - &gt;显示那个东西 - &gt;重装。
醇>
您可以使用header()
重新加载,但除非您使用header("Refresh:0");
我会通过堆叠条件来显示它。
if(isset($diplay)){//2+ times through
$display = $display . $i . "<br>";
}else{//first time through
$diplay = $i."<br>";
}
然后把它放在你的条件
if($i !== 1000) {
if(isset($diplay)){
$display = $display . $i . "<br>";
}else{
$diplay = $i."<br>";
}
}else{
break;
}
echo $ display
echo $display;
然后递增你的变量
$i++;
然后刷新页面并同时传递变量。
header("Refresh:0; url=page.php?i=$i");
然后你必须在开头添加一个获得$ i的条件,或者如果没有找到则分配它。
if(isset($_GET['i'])){//meaning if it's found in the url like so ?i=$i
$i = $_GET['i'];
}else{//first time through
$i = 1;
}
把它放在一起////////////////////////
if(isset($_GET['i'])){
$i = $_GET['i'];
}else{
$i = 1;
}
while($file = file_get_contents('http://example.com?id='.$i)) {
if($i !== 1000) {
if(isset($diplay)){
$display = $display . $i . "<br>";
}else{
$diplay = $i."<br>";
}
}else{
break;
}
echo $display;
$i++;
header("Refresh:0; url=page.php?i=$i");
}