21.10 Eine Zeile per Zufall aus einer Datei auswählen
Problem
Sie wollen per Zufall eine Zeile aus einer Datei auswählen. Beispiel: Sie wollen eine Auswahl aus einer Datei mit Sprichwörtern anzeigen.
Lösung
Verwenden Sie die in Beispiel 21-3 gezeigte Funktion pc_randomint( )
, die die Auswahlwahrscheinlichkeiten gleichmäßig über alle Zeilen einer Datei verteilt.
Beispiel 21-3. pc_randomint( )
function pc_randomint($max = 1) { $m = 1000000; return ((mt_rand(1,$m * $max)-1)/$m); }
Hier ist ein Beispiel, das die Funktion pc_randomint( )
verwendet:
$line_number = 0; $fh = fopen('sprichwoerter.txt','r') or die($php_errormsg); while (! feof($fh)) { if ($s = fgets($fh,1048576)) { $line_number++; if (pc_randomint($line_number) < 1) { $line = $s; } } } fclose($fh) ...
Get PHP 5 Kochbuch now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.