csv auslesen
johnny
- php
Hi!
Ich habs jetzt stundenlang versucht alleine hinzubekommen, aber ich schaffs nicht. Auch die Googlesuuche oder Forumssuche brachte mich nicht weiter.
Ich hab eine CSV-Textdatei. In jeder Zeile sind fünf Elemente (also eigentlich 5 Spalten). Nun möchte ich jede Zeile auslesen und von jeder Zeile wiederum jedes Element auslesen und ausgeben.
Die Textdatei als Array zu speichern ist ja mit file() kein Problem. Auch das Speichern einer einzelnen Zeile als Array ist mit fgetcsv() kein Problem. Doch wie gebe ich nun jedes Element einer Zeile einzeln aus und dies für alle Zeilen in der Textdatei?!
Ich schaffs mühelos entweder alle Zeilen der Textdatei auszulesen und auszugeben ODER jedes Element einer einzelnen Zeile auszulesen und auszugeben. Aber wie ich die beiden Dinge verknüpfen soll seh ich nicht.
Ich schätz mal nicht, dass noch jemand ausser ich hier unterwegs ist. Deshalb geh ich mal ins Bett und guck morgen wieder rein ob jemand mir weiterhelfen konnte ;).
Liebe Grüsse
johnny
Hello Johnny,
Ich schaffs mühelos entweder alle Zeilen der Textdatei auszulesen und auszugeben ODER jedes Element einer einzelnen Zeile auszulesen und auszugeben. Aber wie ich die beiden Dinge verknüpfen soll seh ich nicht.
Wie Du auf ein Element eines zweidimensionalen Arrays zugreifen kannst, das weißt Du?
$dateiname = 'deine/bunte/CSVDatei';
$_file = array(); # leeres Array für die gesamte Datei vorbereiten
$_row = Array(); # leeres Array für einen Datensatz vorbereiten
$fh = fopen($dateiname, 'rb');
flock($fh);
while ($_rec = fgetcsv($dateiname, 8192, ';', '"') # solange Datensätze gelesen werden können
{
$_datei[] = $_rec(); # hänge diese an das Array an
}
fclose($fh);
# in $_datei sollte nun die gesamte Datei stehen.
# die geben wir nun mit Hilfe der "Debugfunktion" print_r() aus.
echo htmlspecialchars(print_r($_datei,1));
echo htmlspecialchars($_datei[1][2]); # gibt das dritte Element des zweiten Datensatzes aus
Liebe Grüße aus Syburg bei Dortmund
Tom vom Berg
Hello,
$_datei[] = $_rec; # hänge diese an das Array an
sorry, sollte keine Funktion werden.
Liebe Grüße aus Syburg bei Dortmund
Tom vom Berg
echo $begrüßung;
Ich habs jetzt stundenlang versucht alleine hinzubekommen, aber ich schaffs nicht. Auch die Googlesuuche oder Forumssuche brachte mich nicht weiter.
Diese Aussage nützt niemandem etwas, da daraus nicht ersichtlich ist, wo bei dir die Verständnisprobleme liegen.
Die Textdatei als Array zu speichern ist ja mit file() kein Problem. Auch das Speichern einer einzelnen Zeile als Array ist mit fgetcsv() kein Problem. Doch wie gebe ich nun jedes Element einer Zeile einzeln aus und dies für alle Zeilen in der Textdatei?!
Was am Beispiel im PHP-Handbuch zu fgetcsv() ist dir denn unversändlich?
echo "$verabschiedung $name";
Diese Aussage nützt niemandem etwas, da daraus nicht ersichtlich ist, wo bei dir die Verständnisprobleme liegen.
Sorry, aber so ein Kommentar war echt nicht nötig. Anschliessend folgte ja die ausführliche Problembeschreibung in der man klar erkennt wo die Verständnisprobleme liegen.
Was am Beispiel im PHP-Handbuch zu fgetcsv() ist dir denn unversändlich?
Die filecsv() war nicht mein Problem. Nur, dass bei der While Schleife
``while (($data = fgetcsv($handle, 1000, ",")) !== FALSE)[/code] automatisch immer zur nächsten Zeile (bis keine Zeile mehr folgt) gesprungen wird, wusste ich nicht.
So konnte ich mein Problem durch einer kleinen Modifikation an dem von Dir angegebenen Beispiel lösen.
Danke trotz dem Anschnauzen zu Beginn Deines Posts.
johnny
Hello,
Die filecsv() war nicht mein Problem. Nur, dass bei der While Schleife
``while (($data = fgetcsv($handle, 1000, ",")) !== FALSE)[/code] automatisch immer zur nächsten Zeile (bis keine Zeile mehr folgt) gesprungen wird, wusste ich nicht.
Da wird überhaupt nicht gesprungen, sondern Byte für Byte aus der Datei gelesen.
Stell Dir eine Datei bitte als "Bindfaden" vor, auf dem die Daten untergebracht sind. Jedes "Zeilenende" ist dann z.B. ein Knoten in dem Faden. Und nun ziehst Du ihn langsam durch Deine Finger (lässt den Lesekopf über die Festplatte gleiten). Mit dieser Modellvorstellung sollte Dir eigentlich klar werden, dass die Leseposition automatisch auf dem Beginn der nächsten "Zeile" steht, wenn die vorherige vollständig (bis hinter das Zeilenende-Zeichen) gelesen wurde.
Liebe Grüße aus Syburg bei Dortmund
Tom vom Berg
Da wird überhaupt nicht gesprungen, sondern Byte für Byte aus der Datei gelesen.
Stell Dir eine Datei bitte als "Bindfaden" vor, auf dem die Daten untergebracht sind. Jedes "Zeilenende" ist dann z.B. ein Knoten in dem Faden. Und nun ziehst Du ihn langsam durch Deine Finger (lässt den Lesekopf über die Festplatte gleiten). Mit dieser Modellvorstellung sollte Dir eigentlich klar werden, dass die Leseposition automatisch auf dem Beginn der nächsten "Zeile" steht, wenn die vorherige vollständig (bis hinter das Zeilenende-Zeichen) gelesen wurde.
Cool. Tolle bildliche Beschreibung. So kann ich mir das gut merken. Dankeschön Tom!
Liebe Grüsse nach Dortmund ;)
johnny