2016-11-25 65 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);