Hi Texter mit x.
Im Manuel steht nichts zum Rückgabewert von array_rand() falls das übergebene Array leer ist.
In PHP 5.2.10 ist der Rückgabewer NULL.
array_rand hat ja einen zweiten, optionalen Parameter, der die Anzahl der zurueckzugebenden Argumente angibt. Gibt man eine Anzahl an, die groesser als die Laange des Arrays ist, etwa
array_rand(array(1,2), 3);
gibt's ein Warning:
Warning: array_rand(): Second argument has to be between 1 and the number of elements in the array
Der Aufruf
array_rand(array(), 1);
liefert das Warning auch. Lediglich
array_rand(array());
gibt kein Warning, obwohl 1 der Default-Wert des zweiten Parameters ist und daher der Aufruf aequivalent zu obigem sein muesste.
Meine Frage ist, kann man sich darauf verlassen oder sollte man immer vorher zusätzlich prüfen, ob das Array leer ist?
Ich wuerde in diesem Fall dazu neigen, mich auf gar nichts zu verlassen. Denn array_rand ist offenbar nicht dafuer gemacht, Deinen Fall kontrolliert zu behandeln. Zumindest riskierst Du, in zukuenftigen Versionen ein Warning um die Ohren geknallt zu kriegen, weil Du es wohl einem Bug zu verdanken hast, dass Du bisher keins kriegst.
Viele Gruesse,
der Bademeister