[PHP] CSV / fgetcsv -> zufällig ausgewählte Zeilen?

Trancer

New member
ID: 54692
L
6 Mai 2006
4
0
Hallo,
folgendes Problem:

Ich habe eine CSV-Datei, mit über 300 Zeilen mit jeweils 30 Feldern. Diese ruf ich über fgetcsv auf; das Grundgerüst sieht dann so aus:

PHP:
$row = 1;
$handle = fopen ("datei.csv","r");
while ( ($data = fgetcsv ($handle, 10000, "|")) !== FALSE ) {
   $num = count ($data);
   print "<p> $num fields in line $row: <br>\n";
   $row++;
   for ($c=0; $c < $num; $c++) {
       print $data[$c] . "<br>\n";
   }
}
fclose ($handle);

Das ist das Beispiel wie es auch bei php.net zu finden ist. Das habe ich soweit auch verstanden. Hauptbestandteil sind ja die beiden Schleifen; die while-Schleife rattert solange durch bis es kein Inhalt mehr in der Datei gibt und trennt die einzelnen Felder mit einem |. Die for-Schleife gibt alle Felder einer Zeile aus.

Jetzt möchte ich aber nicht alle Zeilen angezeigt bekommen, sondern nur 10 zufällig ausgewählte Zeilen. Mein erster Ansatz war der Einsatz von Shuffle um die Zeilen zu mischen und dann z.B. nur die ersten 10 Zeilen anzuzeigen. Aber damit hatte ich kein erfolg; irgendwie wurden da nämlich die Elemente der Zeile gemischt, nicht aber die Zeilen selbst. Okay, nächste Denkansatz war explode oder auch rand_array.... beide Sachen haben aber mein Anfänger-Wissen in PHP überstiegen.


Kann mir jemand weiterhelfen und einen richtigen Ansatz zeigen?
Ich wäre äußerst dankbar. =)


Grüße,
Trancer
 
einfachste lösung: lies die komplette csv in einen array ein und mache hinterher ein random rein, der zufällig die array-werte auswählt, z.B.

PHP:
for ($i=0, $i <= 10, $i++)
{
  $arraywert = rand(10,1000);
  echo $array[$arraywert];
};

^^ ich geb keine garantie auf korrektheit des codes, is schon ziemlich spät :p