2016-11-25 99 views
1

我在PHP 7中构建出现日历,并希望以随机顺序显示日期1 - 24。PHP - 生成没有重复项的随机数

我有一个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; 
    } 
} 

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

回答

10

在你的情况,你需要创建一个数字的范围数组,然后简单地打乱他们

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

这就是所有

2

您可以使用shuffle()方法。

Shuffle()取一个数组并随机排列行。

$array = array("a", "b", "c"); 
shuffle($array); 
// OUTPUT is random 
3
$numbers = range(1, 24); 
shuffle($numbers);