每次循环后显示结果

时间:2016-08-27 18:31:57

标签: php loops while-loop

在下面的代码中,每次在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++;
}

3 个答案:

答案 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的每个值,您需要创建服务器:

  
      
  1. 做它的事情 - &gt;显示那个东西 - &gt;重装。
  2.   

您可以使用header()重新加载,但除非您使用header("Refresh:0");

,否则仅限于20次重新加载(我认为)

我会通过堆叠条件来显示它。

   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");
}