2

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

这是我的一个班轮:

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

基本上“201203140906”是年、月、日、小时。

这是好事还是坏事?有没有更好的方法来做到这一点?

4

3 回答 3

3

在 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);
于 2012-05-17T18:00:47.260 回答
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()”

于 2012-05-17T18:12:20.633 回答
0

鉴于您在评论中的解释,您可能可以使用shuffle()函数解决您的问题。您可以有两个数组,一个是日期列表,另一个是您希望随机分布的数据,然后简单地从打乱的数据中读取。由于没有代码示例,我将把细节留给你。

于 2012-05-21T14:09:27.147 回答