为了构建一个基于闪存的竞赛游戏,该游戏与PHP / MySQL相关联,用于在幕后进行跟踪,我的目标是最终设定一个日期范围(即YYYY-MM-DD和YYYY-之间) MM-DD)并在给定范围内选择随机日期时间(或两个或三个),并将其指定为获胜时间。我不确定最好的解决方法,任何想法?
我对time + rand()很新,并且不确定最好的方法。对这个应用程序似乎有意义的任何建议或有用的片段将是盛大的:D
答案 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