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.