5

如何为以下循环的每次迭代回显某些内容:

<?
    for($i=0;$i<5;$i++) {
          // some (slow) logic
          echo $i;
    } 
?>

我想在它运行时查看输出的值,但是在执行脚本之后$i什么都不输出。0 1 2 3 4

4

2 回答 2

1

试试这个。这里的关键是知道为您的服务器设置的 output_buffering 值(默认值 = 4096)。

ob_start();
$buffer = str_repeat(" ", 4096)."\r\n<span></span>\r\n";

for ($i=0; $i<25; $i++) {
      echo $buffer.$i;
        ob_flush();
        flush();
          sleep(1);
}       

ob_end_flush();

http://php.net/manual/en/outcontrol.configuration.php

于 2013-06-25T15:21:17.433 回答
-2

所以构建一个字符串,然后回显该字符串:

$str = '';
for($i = 0; $i < 5; $i++) {
   $str .= $i;
}
echo $str;

请注意,在实践中,这不会改变任何事情。这样一个微小的循环将几乎立即执行并几乎立即显示。如果您在浏览器上下文中执行此操作,您可能会在单个网络数据包中获得所有数字,并且浏览器也会立即渲染/显示它们。

于 2013-06-25T15:21:21.790 回答