php在一些延迟后显示下一个值
Posted
技术标签:
【中文标题】php在一些延迟后显示下一个值【英文标题】:php display next value after some delay 【发布时间】:2013-02-19 17:43:52 【问题描述】:所以我有一个数组
$super = array(8,9,10,11,12,20,21);
我想在我的网站上显示一小时的第一个值
一小时后显示第二个,以此类推
数组到达末尾“21”后,它会重置并开始显示第一个值
回声 $super [0]
等一小时$super换成
$super[1]下一小时
$super[2]等等。
之后
$super == $super[21]重置
$super 到 $super[0]
我可以使用 next()、current()、reset() 函数,但我不知道如何延迟循环它们。
【问题讨论】:
在第一个页面加载时,将当前的time()
存储到用户的会话中。然后将该值用作时间计算的基准。在$num_hours
小时过去后,执行echo $super[$num_hours];
。添加翻转逻辑。
$super 数组将始终具有这些值还是可以更改?如果你在这里说你需要做什么,那么有人可能会想出一个解决方案
@zamil 值可以改变,数组会得到更多值
@nickb 不能为此使用会话
然后使用cookie,需要持久化。除非您希望保持与服务器的开放连接数小时,否则这不仅对大多数共享主机(如果不是全部)来说是不可能的,而且会浪费资源。
【参考方案1】:
享受服务器端静态版本:
$super = array(8,9,10,11,12,20,21); // Array can be extended
$h = date('H') ; //Current hour. Server time
$start_day_element = 0 ; //Offset, from what element days start.
echo $super[($h + $start_day_element)%count($super)] ;
当然,必须刷新页面才能看到更新的值。
【讨论】:
【参考方案2】:尴尬
用户javascript settimeout用ajax执行js函数
eg:setTimeout("somefun();", 5000);
其中 5000 是时间延迟
function somefun()
$("#msgSpan").load("site.com/somepage.php");
其中“#msgSpan”是显示数组值的元素的 ID
在 somepage.php 中实现相应的返回数组值的逻辑
你可以使用 php 会话来记录当前的数组索引,并且对于每个下一个请求你增加数组索引
【讨论】:
以上是关于php在一些延迟后显示下一个值的主要内容,如果未能解决你的问题,请参考以下文章