我遇到问题flush()
和使用“Internet Explorer”的HTML表格。
我编辑了以下代码,在flush()
的表格中显示“实时”回显,我在flush()
标记之后调用了</table>
,因为在“Internet Explorer”中它没有工作,但我不知道为什么只有我的周期的第一个回声进入表,其他人走出去。有帮助吗?
<html lang="en">
<head>
</head>
<table border='1'>
<tr>
<td>
<?php
$total = 10;
for($i=1; $i<=$total; $i++){
echo "sometext";
//other stuff
?>
</td>
</tr>
</table>
<?php
echo str_repeat(' ',1024*64);
flush();
sleep(1);
}
?>
</body>
</html>
答案 0 :(得分:0)
你正在循环中关闭你的桌子。
<html lang="en">
<head>
</head>
<body>
<table border='1'>
<tr>
<td>
<?php
$total = 10;
for($i=1; $i<=$total; $i++){
echo "sometext";
//other stuff
echo str_repeat(' ',1024*64);
flush();
sleep(1);
}
?>
</td>
</tr>
</table>
</body>
</html>
证明:
答案 1 :(得分:0)
简单地说,你已经关闭了循环中的表而不是循环之外的表。因此,在第一次迭代后,您的表标记不匹配。将</table>
移到闭合循环大括号}
之外。
关于Internet Explorer问题。您可能需要查看此内容:http://php.net/manual/en/function.flush.php
它讨论了某些版本的Internet Explorer在开始刷新数据之前需要一定量的字节。您可能还想尝试在ob_flush();
声明上方调用flush();
。
答案 2 :(得分:0)
浏览器可能正在等待关闭,因为它不知道所有单元格的内容,因此也不知道列的宽度。尝试使用td元素的固定值来提示它,例如:
<td style="width: 200px">