如何为以下循环的每次迭代回显一些内容:
<?
for($i=0;$i<5;$i++) {
// some (slow) logic
echo $i;
}
?>
我希望在运行时看到$i
输出的值,但是在脚本执行后,它不会输出任何内容,然后0 1 2 3 4
。
答案 0 :(得分: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();
答案 1 :(得分:-2)
所以构建一个字符串,然后回显字符串:
$str = '';
for($i = 0; $i < 5; $i++) {
$str .= $i;
}
echo $str;
请注意,实际上,这不会改变任何内容。这样一个微小的循环几乎可以立即执行并几乎立即显示。如果您在浏览器上下文中执行此操作,您可能会在一个网络数据包中获得所有数字,并且浏览器也会立即呈现/显示它们。