我有一个PHP文件,每次刷新时都会从文件夹中随机生成一个图像。我从这里下载了它(这里也有解释)。
与其随机选择图像,我如何让它每小时更改一次图像?例如,我希望它在一个小时内保持相同的图像,然后在该小时结束时更改。基本上,一个新的图像基于某个时间间隔。
谢谢你的帮助。
查找行
$imageNumber = time() % count($fileList);
并将其替换为
$imageNumber = (date(z) * 24 + date(G)) % count($fileList);
这应该对你有用。
我认为您需要一个随机的oracle函数。基本上,它是一个random()
函数,它接受一个输入并生成一个随机数,并保证具有相同输入的所有调用都会给出相同的输出。
要创建传递给oracle的值,请使用每小时更改一次的东西。我会使用julian_day_number * 24 + hour_number
或类似的东西(仅仅hour_number
还不够好,因为它每24小时就会重复一次)。
然后,每当你的页面加载时,生成你的小时数,通过你的oracle传递,然后像现在使用随机值一样使用结果。它仍然会显示为随机,并且每小时更改一次。
希望能有所帮助!
编辑:随机预言不需要花哨——它们可以简单到(公然从另一个问题的答案中窃取):
int getRand(int val)
{
//Not really random, but no one'll know the difference:
return ((val * 1103515245) + 12345) & 0x7fffffff;
}
为了简单起见,在img/
中放置8个不同的图片,从1.jpg
命名为8.jpg
,然后:
$imagePath = sprintf("img/%s.jpg", (date('G') %8) +1);
G
参数为:
一小时的24小时格式,不带前导零。
现在你确信你每小时都有一张不同的照片,每个人看到的都是一样的。
EDIT:缩小或加宽重复周期调整模,24
有几个除数[1,2,3,4,6,8,12]。