Flo: csv-Datei auslesen und in Array speichern

Ich habe schon mehrere Varianten ausprobiert, aber ich komme nicht wirklich zum gewollten Ergebnis.

Und zwar habe ich eine .csv-Datei mit im Kopf der Datei Benennungen. Ich möchte in der ersten Zeile die Benennungen auslesen und in ein Array speichern. Die rechtlichen Daten auch in ein Array.

Auslesen möchte ich die Daten mit z.B. $data[0][Name], $data[0][Vorname] etc. und für die nächste Zeile eben $data[1][Name]...

Kann mir bitte jemand weiterhelfen?

Vielen Dank

Flo

  1. Hi there,

    Kann mir bitte jemand weiterhelfen?

    Ja.
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    Und jetzt: was geht denn nicht?

  2. Hello,

    unter
    http://selfhtml.bitworks.de/snippets/dateien_auslesen/arbeiten_mit_csv-dateien/

    findest Du eine Funktion, die CSV-Dateien ausliest.
    Ich habe sie noch nicht genügend dokumentiert. Muss ich noch nachholen.
    Frag also, wenn Du 'was nicht verstehst.

    Es ist manchmal günstiger, das Datenarray anders herum aufzubauen, also

    $_data['name'][1]
      $_data['vorname'][1]
      $_data['passwort'][1]

    $_data['name'][2]
      $_data['vorname'][2]
      $_data['passwort'][2]

    Die Funktion macht das so, wenn man Spaltennamen angegeben hat oder auf true gesetzt hat.

    Vorteile sind:

    • Das Array im Speicher wird kleiner.
    • Die Spalten sind einzeln sortierbar, summierbar, usw. mit den Standard-Array-Funktionen von PHP

    Nachteil:

    • Man muss sich für "select", "insert", "delete", "update" vier eigene kleine,
        aber dann universell einsetzbare Funktionen schreiben.

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
  3. Hallo,

    test.csv:

    vorname,name,alter
    bob,mayer,14
    alina,mueller,18

      
    <?php  
    $fh = fopen("test.csv","r");  
    $colNamesRead = false;  
    $rowCount = 0;  
    while($row = fgetcsv($fh)) {  
    	if (!$colNamesRead) {  
    		$colNames = $row;  
    		$colNamesRead = true;  
    	} else {  
    		foreach ($row as $colNr => $cellValue) {  
    			$table[$rowCount][$colNames[$colNr]] = $cellValue;  
    		}	  
    	}  
    	$rowCount++;	  
    }  
    var_dump($table);  
      
    
    

    gibt:

    array(2) {
      [1]=>
      array(3) {
        ["vorname"]=>
        string(3) "bob"
        ["name"]=>
        string(5) "mayer"
        ["alter"]=>
        string(2) "14"
      }
      [2]=>
      array(3) {
        ["vorname"]=>
        string(5) "alina"
        ["name"]=>
        string(7) "mueller"
        ["alter"]=>
        string(2) "18"
      }
    }
    Gruß

    jobo