O'Reilly logo

PHP 5 Kochbuch, Third Edition by Stephan Schmidt, Ulrich Speidel, Matthias Brusdeylins, Carsten Lucke, Adam Trachtenberg, David Sklar

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

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 Listing 21.3 gezeigte Funktion pc_randomint(), die die Auswahlwahrscheinlichkeiten gleichmäßig über alle Zeilen einer Datei verteilt.

function pc_randomint($max = 1) {
  $m = 1000000;
  return ((mt_rand(1,$m * $max)-1)/$m);
}

Listing 21.3 pc_randomint()

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) or ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required