PHP使用今天的日期生成一个随机数

时间:2012-05-17 17:55:24

标签: php date random time

我正在尝试分配一个内容块(在网页上)一个随机生成的数字,该数字基于今天的日期(无论将是什么)和固定数字。由于某种原因,输出的数字种类存在显着差异。例如,当我在本地测试我的代码时,生成的数字对我来说足够好(正面)但是在实际的实时服务器上它们通常是相反的并且是负数。

这是我的一个班轮:

<?php $today=date('YmdHi'); echo rand(201203140906, $today); ?>

基本上'201203140906'是年,月,日,小时。

这是好还是坏?有更好的方法吗?

3 个答案:

答案 0 :(得分:2)

在32位系统上,INT中可以保存的最大值是2147483647.

http://php.net/manual/en/language.types.integer.php

如果您的本地计算机是64位且服务器是32位,则它们将具有不同的大小限制。服务器将无法处理与201203140906一样大的整数。

您可以随机生成较小的数字,然后将其添加到201203140906。

或许这样:

$today = date('YmdHi');
$startDate = date('YmdHi', strtotime('2012-03-14 09:06:00'));
$range = $today - $startDate;
$rand = rand(0, $range);
echo "$rand and " . ($startDate + $rand);

或者您可以这样做以在过去十天内生成随机日期:

$today = date('YmdHi');
$startDate = date('YmdHi', strtotime('-10 days'));
$range = $today - $startDate;
$rand = rand(0, $range);
echo "$rand and " . ($startDate + $rand);

答案 1 :(得分:1)

<?php 
$then = strtotime('2012-03-14 09:06:00'); 
$now = time();
for($i=0; $i<100; $i++) echo date('YmdHi', rand($then, $now)), '<br>'; 
?>

顺便说一下......你也可以使用“uniqid()”

答案 2 :(得分:0)

鉴于您在评论中的解释,您可以使用shuffle()函数解决您的问题。您可以有两个数组,一个是日期列表,另一个是您希望随机传播的数据,然后只需从混洗数据中读取。由于没有代码示例,我会将详细信息留给您。