phpbar.de logo

Mailinglisten-Archive

[php] random order

[php] random order

Ulf Wendel ulf_(at)_redsys.de
Sat, 08 Jan 2000 20:26:17 +0000


Richard Feist wrote:
> wie kann ich eine table in zufaelliger reihenfolge ausgeben?

Mit Tabelle meinst Du Datenbanktabelle? Du möchtest also eine Wahlurne
ohne zurücklegen? 

Ermittle alle Keys (oder sauge gleich alle Daten, falls nicht zu viel
Speicherverbrauch entsteht). 

Falls Du klassisch vorgehen möchtest, benutze 
rand() (http://www.php.net/manual/function.rand.php3) und count()
(http://www.php.net/manual/function.rand.php3) um zufällig auf einzelne
Werte in dem Array zuzugreifen: 

$id = rand(0, count($daten))

Verarbeite $daten[$id] und benutze unset($daten[$id])
(http://www.php.net/manual/function.unset.php3) zur Entfernung des
Eintrags aus der Urne.

Falls Du ein aktuelles PHP hast, nimm shuffle()
(http://www.php.net/manual/function.shuffle.php3) zum würfeln. In diesem
Fall kannst Du Dir auch das unset sparen, weil Du jedes Element nur
einmal verarbeitest:

shuffle($daten);
while (list($k, $v)=each($daten))
 echo "$k => $v<br>\n";

Ulf


php::bar PHP Wiki   -   Listenarchive