我对PHP很陌生,并且在弄清楚问题时遇到了一些麻烦。每当我使用foreach循环将某些内容回显到屏幕时,它只会在循环完成后回显。这使得页面加载时间相当长。
有没有办法让循环迭代后立即回显?
例如,
foreach ($a as $k => $v){
echo $k . " : " . $v;
}
我希望它在完成一个循环而不是在结束时回显。
非常感谢任何帮助!
答案 0 :(得分:0)
每次迭代循环都会echo
,但不会立即将结果发布到屏幕上。一旦页面在浏览器中呈现,您将只看到结果,除非您正在使用Javascript / AJAX进行某些操作以使其以不同的方式工作。
您没有像使用桌面/移动应用程序那样立即获得结果,因为PHP需要构建包含您使用PHP代码生成的呈现HTML文档的HTTP响应,然后将该响应发送到浏览器,它被渲染的地方。
答案 1 :(得分:0)
在调用php yes的浏览器中,您必须等待整个页面加载,并且在显示数据之前完成所有服务器执行。如果你想为了测试目的加快速度,可以在循环中放置一个中断来停止循环并继续。另外,为了逐个查看结果,您可以在服务器或终端/ cmd中的计算机上运行php文件。几年前曾经有过一种方法可以找到一个浏览器和Web服务器组合,它仍然支持php中的flush命令以进行浏览器快速发送。这样做的问题是缓冲区会覆盖并且不喜欢被发送出去,尤其是在当今这个时代有更多高级缓冲区。
答案 2 :(得分:0)
您可以使用输出缓冲来实现
类似的东西:
ob_start();
foreach ($a as $k => $v){
echo $k . " : " . $v;
ob_flush();
}
ob_end_flush();
但我不推荐它。您可以在this site
上详细了解相关信息答案 3 :(得分:0)
在用重写问题进行了一些搜索后,我发现了一些需要使用flush()的信息;和ob_flush();.将它们添加到foreach循环的末尾会将其推送到浏览器并在每次迭代后显示它。
例如:
foreach ($a as $k => $v){
echo $k . " : " . $v;
flush();
ob_flush();
}