2016-11-25 16 views
1

Ich baue einen Adventskalender in PHP 7 und möchte die Daten 1 - 24 in zufälliger Reihenfolge anzeigen.PHP - Erzeuge Zufallszahlen ohne Duplikate

Ich habe ein Jquery-Plugin, das meine div Elemente randomisieren kann, aber es ist nicht sehr gut, und ich möchte wissen, wie man es in PHP macht.

zur Ausgabe von Mein Code die Daten aussieht (vereinfacht dargestellt) wie folgt aus: war

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

Mein Plan statt rand(1, 24) verwenden dann speichern Sie alle Zahlen, die in einem Array erzeugt worden war, z.B.

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

Dann überprüfen Sie $used_dates bei der Auswahl eines neuen Datums, z.

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

Dies scheint jedoch ineffizient. Gibt es bessere Wege?

Antwort

10

In Ihrem Fall müssen Sie Bereich Array von Zahlen erstellen und dann einfach mische sie

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

Das ist alles

2

Sie können die Methode shuffle() verwenden.

Shuffle() nehmen Sie ein Array und Reihenfolge Zeilen nach dem Zufallsprinzip.

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