PHP比赛,试图在两个给定日期之间选择获胜者日期/时间

时间:2011-05-24 02:01:31

标签: php random

为了构建一个基于闪存的竞赛游戏,该游戏与PHP / MySQL相关联,用于在幕后进行跟踪,我的目标是最终设定一个日期范围(即YYYY-MM-DD和YYYY-之间) MM-DD)并在给定范围内选择随机日期时间(或两个或三个),并将其指定为获胜时间。我不确定最好的解决方法,任何想法?

我对time + rand()很新,并且不确定最好的方法。对这个应用程序似乎有意义的任何建议或有用的片段将是盛大的:D

1 个答案:

答案 0 :(得分:3)

$start = '2011-05-12';
$end   = '2011-05-30';

$start = strtotime($start);
$end   = strtotime($end);

$winningTimes = array();
for ($i = 1; $i <= 3; $i++) {
    $winningTimes[] = mt_rand($start, $end);
}

这为您提供了给定范围内的三个时间戳。时间戳仅为1970年以来的秒数,因此它们是简单的序号。只需使用mt_rand在开始范围内选择一个随机数。使用例如
将时间戳转换回人类可读日期 date('Y-m-d', $winningTimes[0])


要确保您获得唯一日期,请执行以下操作:

$start = strtotime('2011-05-12');
$end   = strtotime('2011-05-30');
$days  = array();

// populate array with all possible days
for ($i = $start; $i <= $end; $i = strtotime('+1 day', $i)) {
    $days[] = date('Y-m-d', $i);
}

shuffle($days); // randomize
$days = array_slice($days, 0, 3); // take first 3