所以我希望在一个.txt文件中有一个带有单独行的数组并拉出每一行并在一段时间后显示它...我不知道是否需要将ajax与php混合或者如果这可以只是直接的PHP。
foreach是最好的方法吗?
<?php
$x=file("sayings.txt");
foreach ($x as $value)
{
echo $value . "<br />";
}
?>
我在哪里可以实现持续时间..是否有等待?
像这样: {
echo $ value。 “
”;
等待1000 //毫秒
}
使用javascript进行此操作..如果您想要答案/代码,请点击此处: javascript array timed
答案 0 :(得分:1)
我假设你在浏览器中运行它。
最好使用javascript在客户端进行。您可以更好地控制客户端发生的事情。除非您的数据发生变化,否则您不需要ajax。
你可以在PHP方面做到这一点,但是你可能会遇到缓冲问题(请参阅手册以了解输出缓冲)。当你进行sleep()
循环时,页面的其余部分也不会加载。
答案 1 :(得分:1)
服务器端你可以这样做:
<?php
$x=file("sayings.txt");
foreach ($x as $value)
{
echo $value . "<br />";//Send the output
flush(); //Make sure it's outputted
sleep(1); //Sleep 1 second
}
?>
但是,您也可以使用带有参数(索引)的Ajax调用,该参数将在每次调用时返回下一个索引。您可以使用Javascript中的SetTimeOut
来执行此操作。
<script type="text/javascript">
var arrayIndex = 0;
function getArrayData()
{
var dataFromServer="";
$.get("myServerPage.php", { 'arrayIndex': arrayIndex },
function(data){
alert("Line : " + data);
arrayIndex++;
var t=setTimeout("getArrayData()",1000);//Every 1 second
});
}
</script>
在myServerPage.php中,你只需要检查$ _GET来检查索引并输出好的行。 (验证数组索引是否正常)。此外,在服务器端,一旦你完成发现数组不好,这可能是停止的触发器,你只需要将数据返回到客户端(而不仅仅是行),并告诉javascript停止。而已。希望对你有所帮助。
答案 2 :(得分:1)
<?php
$x=file("sayings.txt");
foreach ($x as $value)
{
echo $value . "<br />";
sleep(1); //wait 1000ms
echo str_repeat(" ", 50000); //Send output buffer
flush();
}
?>
答案 3 :(得分:0)
您还可以查看flush
<?php
$x=file("sayings.txt");
foreach ($x as $value)
{
echo $value . "<br />";
flush(); // send the content to the browser
sleep(1); // sleep one second
}
?>
通过此实现,执行期间savings.txt的更改不会更改输出,因为文件内容已缓冲。
您还可以查找AJAX,它将重新获取文件并获取和更新内容。