每天从数组中回应一个随机元素

时间:2015-11-19 10:19:36

标签: php arrays random

我试图创建一个简单的函数,它从数组中回送一个随机元素,但每当那一天发生变化时它应该会改变。例如:

$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 -

1 个答案:

答案 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;