Hallo Pit,
ich finde es zum lernen viel spaßiger
Lernst Du? Oder lieferst Du ein Produkt an einen Kunden ab? Abgesehen davon: Wenn 10 Spalten erwartet werden, aber 99% der Zeilen haben 9 Spalten, was sagt das über die Datei? Ist sie falsch? Ist das normal? Solche Fragen musst Du beantworten können. Du erwartest ja bestimmte Daten, die Du in eine konkrete Tabelle importieren willst. Wenn es zu wenig Spalten sind, dann fehlt was. Was tust Du mit der Lücke?
Was ist denn effizienter?
Falsche Frage. Ok, nicht uninteressant, aber nicht entscheidend.
Korrekte Frage: Was ist effektiver[1]? Du wirst das ja nicht alle 5 Minuten laufen lassen, darum ist Effizienz nachrangig. fgetcsv kümmert sich nicht nur um das Separieren derFelder in ein Array, sondern auch darum, delimited strings richtig zu behandeln (wenn z.B. der Feldseparator ein Zeichen in den Daten ist
1;47.11;"Ein String; aber was für einer";1234
fgetcsv sollte das korrekt behandeln. Ein eigener explode(";", $zeile) macht es falsch.
Und ich denke, dass die fgetcsv Lösung auch effizienter ist. Sie liest die Datei Zeile für Zeile, so dass Du nicht die ganze Datei ins RAM saugen musst. Darüber hinaus sollte sie in C implementiert sein, d.h. sollte auch weniger Laufzeit als eine PHP Lösung brauchen.
Rolf
sumpsi - posui - clusi
effizient: schneller, speichersparender. effektiv: führt die geforderte Funktion korrekt aus ↩︎