Tom: datei auslesen und anzahl fest stellen

Beitrag lesen

Hello,

Die Funktion file() ist nicht für CSV-Dateien geeignet, da CSV-Dateien auch Zeilenumbrüche innerhalb der eingeschlossenen Feldwerte haben können, die NICHT das Datensatzende bedeuten.

File() reagiert aber auf jeden Zeilenumbruch als Satzende.

Wenn Deine CSV-Datei sauber aufgebaut ist, alos alle Felder jeweils in Begrenzer eingeschlossen sind, Begrenzerzeichen innerhalb eines Datenfeldes durch Doppelung maskiert sind, dann kannst Du die Daten aus der Datei folgendermaßen in ein zweidimensionales Array übertragen:

$maxrecsize = 10000;   #(Maximale Datensatzgröße)
$seperator  = ',';     # Feld-Trennzeichen
$enclosure  = '"';     # Feldwert-Begrenzer
$_data = array();

$fh = fopen($dateiname,'r');
  if ($fh)
  {
    while (!feof($fh))
    {
      $_data[] = fgetcsv($fh,$maxrecsize,$seperator,$enclosure);
    }
  }

in $_data[$n][$col] findest Du dann den Feldwert.
$n ist die lfd. Nummer des Datensatzes im Array (beginnend bei 0) und
$col ist die Feldnummer im Datensatz (beginnend bei 0).

Wenn Du nun weißt, in der wievielten Spalte der gesuchte Wert steht, kannst Du ja ganz einfach zählen:

$num = 0;
  if(is_array($_data))
  {
    foreach($_data as $key => $_rec)
    {
      if ($_rec[$col] != $ausschlusswert) $num++;
    }
  }

echo "Die Datei enthält $num Datensätze ohne den Begriff $ausschlusswert in der $col"."ten Spalte";

Harzliche Grüße aus http://www.annerschbarrich.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau