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