Start · Sprachen · PHP · Referenz · array_rand

array_rand

Funktion

Gibt einen oder mehrere zufällig ausgewählte Schlüssel aus einem Array zurück.

seit PHP 4.0.0 Kategorie: array

Signatur

array_rand(array $array, int $num = 1): int|string|array

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

Typ
int|string|array
Beschreibung
Bei $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
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ällige Produktauswahl: 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
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.