Signatur
Beschreibung
array_rand() wählt zufällig einen oder mehrere Schlüssel aus dem übergebenen Array aus und gibt diese zurück. Wird nur ein Schlüssel benötigt (Standardfall $num = 1), ist der Rückgabewert ein einzelner Skalar (Integer oder String). Werden mehrere Schlüssel angefordert, gibt die Funktion ein numerisch indiziertes Array mit den zufällig gewählten Schlüsseln zurück.
Die Funktion eignet sich gut, um zufällige Elemente aus einer Liste auszuwählen – etwa für Gewinnspiele, zufällige Produktvorschläge oder zufällige Testdatensätze. Die zurückgegebenen Schlüssel können anschließend genutzt werden, um auf die eigentlichen Werte im Ausgangs-Array zuzugreifen.
Wichtig: array_rand() gibt Schlüssel, nicht Werte zurück. Der Zufallsgenerator basiert auf dem Mersenne-Twister-Algorithmus und ist nicht kryptografisch sicher. Für sicherheitskritische Anwendungen sollte stattdessen random_int() in Kombination mit einer eigenen Logik verwendet werden.
Die Reihenfolge der zurückgegebenen Schlüssel bei $num > 1 entspricht der ursprünglichen Reihenfolge im Array, nicht der Auswahlreihenfolge.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $array Pflicht | array | Das Quell-Array, aus dessen Schlüsseln zufällig ausgewählt wird. Darf nicht leer sein, da sonst ein E_WARNING ausgelöst wird. |
|
| $num | int | 1 | Anzahl der zufällig auszuwählenden Schlüssel. Muss zwischen 1 und der Anzahl der Array-Elemente liegen, andernfalls wird ein E_WARNING ausgelöst. |
Rückgabewert
$num = 1 wird ein einzelner Schlüssel als int oder string zurückgegeben. Bei $num > 1 wird ein numerisch indiziertes Array mit den ausgewählten Schlüsseln zurückgegeben, wobei deren Reihenfolge der ursprünglichen Array-Reihenfolge entspricht.Beispiele
Einen zufälligen Schlüssel ermitteln und den Wert ausgeben
<?php
$farben = ['rot', 'grün', 'blau', 'gelb', 'lila'];
$zufallsSchluessel = array_rand($farben);
echo "Zufällige Farbe: " . $farben[$zufallsSchluessel];
// Mögliche Ausgabe: Zufällige Farbe: blau
Mehrere zufällige Elemente aus einem assoziativen Array auswählen
<?php
$produkte = [
'apfel' => 0.99,
'banane' => 0.49,
'kirsche' => 2.49,
'mango' => 1.79,
'orange' => 0.89,
];
$schluessel = array_rand($produkte, 3);
echo "Zufällige Produktauswahl:\n";
foreach ($schluessel as $key) {
echo $key . ' => ' . $produkte[$key] . ' EUR' . PHP_EOL;
}
// Mögliche Ausgabe:
// apfel => 0.99 EUR
// kirsche => 2.49 EUR
// orange => 0.89 EUR
Zufälliges Mischen von Array-Elementen mit array_rand
<?php
$teilnehmer = ['Alice', 'Bob', 'Charlie', 'Diana', 'Eva'];
// Zwei zufällige Gewinner ziehen
$gewinnerSchluessel = array_rand($teilnehmer, 2);
echo "1. Platz: " . $teilnehmer[$gewinnerSchluessel[0]] . PHP_EOL;
echo "2. Platz: " . $teilnehmer[$gewinnerSchluessel[1]] . PHP_EOL;
// Mögliche Ausgabe:
// 1. Platz: Bob
// 2. Platz: Eva
// Wichtig · Fallstricke
Sicherheitshinweis: array_rand() verwendet intern den Mersenne-Twister-Zufallsgenerator, der nicht kryptografisch sicher ist. Für sicherheitsrelevante Anwendungen (z. B. Token-Generierung, Passwort-Resets) sollte random_int() oder random_bytes() verwendet werden.
Leeres Array: Wird ein leeres Array übergeben, erzeugt die Funktion einen E_WARNING-Fehler. Vor dem Aufruf sollte daher geprüft werden, ob das Array mindestens ein Element enthält (!empty($array)).
Ungültiger $num-Wert: Ist $num kleiner als 1 oder größer als die Anzahl der Array-Elemente, wird ebenfalls ein E_WARNING ausgelöst und null zurückgegeben.
Rückgabetyp beachten: Da der Rückgabewert je nach $num ein Skalar oder ein Array ist, sollte bei dynamischer Nutzung der Typ explizit geprüft werden, um Fehler beim Zugriff zu vermeiden.