我试图创建一个简单的函数,它从数组中回送一个随机元素,但每当那一天发生变化时它应该会改变。例如:
$myarray = array(
'foo',
'bar',
'winnie',
'the',
'poo');
echo array_rand($myarray);
每次页面加载时,都会从数组中打印一个随机的东西。但我希望它每天只改变一次。我希望它能够正常工作,所以如果您在星期一的8:00和星期一的17:00加载页面(编辑1:它是相同的随机输出,无论是否,如果它& #39;用户A或看到它的用户B ),然后你会从数组中看到相同的(随机)元素。但是如果页面在星期二13:00加载,那么将打印与该阵列不同的元素。 编辑1:时区应该是最容易编程的(因为它并不重要)。所以我假设服务器时区是最简单的。
我想过获取日期的整数值,然后使用modulo来表示数组的长度(因为数组的长度会随着时间的推移而变得越来越多)。 echo $myarray[date(U) % count($myarray)]
的某些内容(这已经过测试并且不会起作用,因为它是1970年以来的第二次(或者每当),而不是日子,但它只是给出了一个想法我想到了什么样的解决方案)。
网站上没有数据库,因此我无法将值存储在数据库中。
Edit2:因此,如果我们有用户A和用户B,那么每个人都会在每周的每一天加载页面。然后,我正在寻找用户A来接收这些内容:
Monday: foo
Tuesday: the
Wednesday: foo
Thursday: poo
Friday: winnie
Saturday: winnie
Sunday: bar
如果用户B加载页面,那么他将看到与用户A相同的值(我认为这也是设置它的最简单方法)。
- 编辑结束 -
Edit3 :它也可以只是一个存储在FTP服务器上的txt文件或json文件,每天都会打印这个txt文件的新行。它不需要是一个数组。
- 编辑结束3 -
答案 0 :(得分:2)
您可以使用服务器上的简单文本文件执行此操作:
$randoms = array(
'foo',
'bar',
'winnie',
'the',
'poo'
);
$file = 'todaysrandom.dat';
if(file_exists($file) && date('d-m-Y', filemtime($file)) == date('d-m-Y')){
//if the file exists, and was last updated today, return the contents of the file:
$todaysRandom = file_get_contents($file);
}else{
//else create todays value, and save it to the file
$todaysRandom = $randoms[rand(0,count($randoms)-1)];
file_put_contents($file, $todaysRandom);
}
echo $todaysRandom;