Textdatei in Array einlesen

Die Datei test.csv:
Code:
title1,title2,title3
"data1z1","data2z1","data3z1"
"data1z2","data2z2","data3z2"

Der code:
PHP:
<?
$lines = file("./test.csv");

$array = array();

$headers = explode(',',trim(array_shift($lines)));

foreach($lines as $l) {
   $tmp = explode('","',trim($l));
   $tmp2 = array();
   $i=0;
   foreach ($tmp as $t) {
        if ($i==0) {
          $tmp2[$headers[$i]] = substr($t , 1);
        } else if ($i == (sizeof($tmp) - 1)) {
          $tmp2[$headers[$i]] = substr($t , 0 , strlen($t) - 1);
        } else {
          $tmp2[$headers[$i]] = $t;
        }
      $i++;
   }
   $array[] = $tmp2;
}
print_r($array);
?>

Die Ausgabe:
Code:
Array
(
    [0] => Array
        (
            [title1] => data1z1
            [title2] => data2z1
            [title3] => data3z1
        )

    [1] => Array
        (
            [title1] => data1z2
            [title2] => data2z2
            [title3] => data3z2
        )

)
Ich habe das jetzt noch um die if-Abfragen erweitert und die trim() Funktion hinzugefügt, damit das \n am Ende der Zeile abgeschnitten wird. Außerdem das explode() auf "," prüfen lassen, und nicht nur auf Komma.
Ein paar kleinere Fehler/Unzulänglichkeiten waren also noch drin, aber im Prinzip funktioniert es.

Die erste gepostete Variante gibt bei mir folgende Ausgabe:
Code:
Array
(
    [0] => Array
        (
            [title1] => "data1z1"
            [title2] => "data2z1"
            [title3
] => "data3z1"

        )

    [1] => Array
        (
            [title1] => "data1z2"
            [title2] => "data2z2"
            [title3
] => "data3z2"
        )

)
Daran erkennt man, dass die Zeilenumbrüche noch raus müssen und die Anführungszeichen noch nicht entfernt sind. Aber im Prinzip habe ich Dich so verstanden, dass Du so ein Array haben willst.

Wenn nicht, verstehe ich Dich nicht.

Gruß hpvw

EDIT: und nun habe ich wieder getippt, während ein anderer schon gepostet hat, muss mal von meinem 2Finger Suchsystem Abstand nehmen.
NOCH EIN EDIT: mir ist gerade aufgefallen, dass dieser Beitrag mein 100ster ist und mich zum Mitglied Gold katapultiert.
 
Zuletzt bearbeitet:
Zurück