PHP - 生成没有重复的随机数

时间:2016-11-25 12:39:38

标签: php

我正在使用PHP 7构建一个降临节日历,并希望以随机顺序显示日期1 - 24。

我有一个jquery插件可以随机化我的div元素,但它不是很好,我想知道如何在PHP中完成它。

我输出日期的代码看起来(简单来说)如下:

for ($d = 1; $d <= 24; $d++) {
    echo $d;
}

我的计划是使用rand(1, 24)然后存储在数组中生成的任何数字,例如

$date = rand(1, 24);
$used_dates[] = $date;

然后在选择新日期时检查$used_dates,例如

$unique_date = false;
while (!$unique_date) {
    $date = rand(1, 24);
    if (!in_array($date, $used_dates)) {
       $used_dates[] = $date;
       $unique_date = true;
    }
}

但这似乎效率低下。还有更好的方法吗?

3 个答案:

答案 0 :(得分:10)

在您的情况下,您需要创建范围数组,然后简单地将它们随机播放

$days = range(1,24);
shuffle($days);

多数人

答案 1 :(得分:3)

$numbers = range(1, 24);
shuffle($numbers);

答案 2 :(得分:2)

您可以使用shuffle()方法。

Shuffle()接受一个数组并随机排序。

$array = array("a", "b", "c");
shuffle($array);
// OUTPUT is random