2016-11-25 8 views
1

私はPHP 7でアドベントカレンダーを作成していて、1から24までの日付をランダムな順序で表示したいと考えています。PHP - 重複のない乱数を生成

私のdiv要素をランダム化できるjqueryプラグインがありますが、これはあまり良くありません。PHPで行う方法を知りたいのですが。

このような出力に私のコード(単純化したという点で)日付のルックス:私の計画ではなく、例えば、配列で生成された任意の番号を格納、その後rand(1, 24)を使用していた

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

$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

シャッフル()メソッドを使用できます。

シャッフル()は配列を取り、ランダムに行を並べ替えます。あなたのケースでは

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