• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Multidimensionale Arrays erstellen

blabla333

Mitglied
Ich habe eine Excel-Tabelle, die ähnliche (fiktive) mehrfache Eintrage beinhaltet:
Code:
A;B;C;D;E;F;G;H;I;J;K;L;M;N;
Tomaten;Hersteller;Strauchgewächs;Cherrytomaten;Karton;geschält;100;1000;300;g;1;3;2;;
;;;;Pallette;gehackt;0,5;2;0,5;t;1;;;Nur Montags;
;;;Fleischtomaten;;geschält;100;1000;300;g;1;;;;
;;;;;gehackt;30;;;g;1;;;;
;;;;;unverarbeitet;100;200;100;g;1;;;;
;;;Andere;;geschält;500;;;g;3;;;;
;;;;;unverarbeitet;1000;;;g;1;;;;
Dabei können die Elemente (hier Tomaten) einen unterschiedlichen Umfang haben. Beim nächsten Eintrag Gurken könnten dabei z.B. nur 3 Zeilen mit zwei Sorten angegeben sein.
Ich habe jetzt mehrere Schwierigkeiten:


1) Ich möchte aus diesen Daten ein sinnvolles, mehrdimensionales Array erstellen (und daraus schließlich ein JSON-Element generieren). Die Frage ist nur wie?
2) Auch, wenn das hier nicht ganz rein passt: Wie speichere ich dies sinnvoll in eine SQL-Datenbank? Die Einträge in Spalte A zeigen immer einen Datensatz an, so dass in den darunterliegenden Zeilen in dieser Spalte keine Einträge sind. Brauche ich dazu mehrere Tabellen?


Hieraus könnte man z.B. Bestellungen generieren. Ich benötige am Ende dann folgende Ausgabe:



Code:
Tomaten
Hersteller


Art: Strauchgewächs


Cherrytomaten
    geschält: 1-3x (2) 100-1000 (300) g [Karton]
    gehackt: 1x 0,5-2 (0,5) t [Pallette] /Nur Montags/
Fleischtomaten
    geschält: 1x 100-1000 (300) g
    gehackt: 1x 30 g
    unverarbeitet: 1x 100-200 (100) g
Andere
    geschält: 1x 500 g
    unverarbeitet: 1x 1000 g
 
Mit str_getcsv() kannst Du aus einer csv-Zeile ein Array anlegen. Dann kannst Du deine CSV-Datei einlesen, zeilenweise auswerten und das Array mit den Zeilenwerten in ein übergeordnetes Array eintragen.
Die Tabelle in der Datenbank würde ich genau so anlegen, d. h. für jede Zeile einen Datensatz. Das Zusammenstellen zum Ausgabeformat musst Du dann beim Auslesen erledigen.
 
Danke für deine Antwort.
Vom Aufbau ist mir das noch nicht so ganz klar.

Wenn ich die Daten einfach so in eine Datenbank packe, dann ist ja erst einmal gar nicht klar, dass die Zeile 2 zum Datensatz "Tomate" gehört und Zeile xy wiederum zu einem anderen.

Ich habe mir nun überlegt, dass ich mehrere Tabellen anlege:
1) Tomate, Gurke, usw.. (je mit einer eindeutigen ID)
2) Spalte D (also die Einteilungen) wiederum in eine neue Tabelle mit Anbindung an Tabelle 1
3) Die eigentlichen Inhalte dann wiederum in eine dritte Tabelle.

Letztlich werden dann bei der Ausgabe alle Daten ausgelesen und daraus ein gesamtes multidimensionales Array erstellt.
Allerdings habe ich ehrlich gesagt noch nicht so richtig raus, wie das mit den multidimensionalen Array funktioniert. Wie würde denn die obige beispielhafte Ausgabe als solches Array denn aussehen?
 
Jetzt verstehe ich, was Du vorhast. Lies dir am besten mal dieses durch:
PHP: array - Manual
Dann könnte man das Array so anlegen:

PHP:
$fruits = array (
    "Tomate"  => array("Hersteller" => "Hersteller1", "Art" => "Strauchgewächs", "Sorte" => array(
        "Cherrytomate" => array("geschält" => array("1-3x", "(2)", "100-1000" //usw.
                                          "gehackt" => array("1x", "0,5-2", "(0,5) // usw.
                                         ),
        "Fleischtomate" => array("geschält" => array(" //usw.
                                          "gehackt" => array(" // usw.
                                          "unverarbeitet" => array (" // usw.
                                         ),
        "Andere" => array("geschält" => array( //usw.
        ),
    "Gurke" => array("Hersteller => "Hersteller2", "Art" => usw.
    // usw.
    );

Es ergibt sich also ein vierdimensionales Array. Das innerste kann man natürlich auch noch assoziativ aufbauen.
Die Tabellen würde ich dann so aufbauen:
FRUCHT mit Tomate als Schlüssel sowie Hersteller, Art und Sorte
EIGENSCHAFTEN mit Tomate, Cherrytomate, geschält als Schlüssel sowie die ganzen Eigenschaften.
 
Zurück
Oben