PHP komplexes Array

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • PHP komplexes Array

    Hallo Ihr! Ich hab ein Problem mit nem recht komplexen PHP-Array, hier die Struktur mit print_r:

    Code:
    Array
    (
        [BelegungsPlan] => Array
            (
                [DruckEinheit] => Array
                    (
                        [0] => Array
                            (
                                [Nr] => CS05
                                [Zylinder] => Array
                                    (
                                        [0] => Array
                                            (
                                                [Nr] => 1
                                                [Farben] => 5
                                                [Bahn] => Array
                                                    (
                                                        [0] => Array
                                                            (
                                                                [Nr] => 4
                                                                [Seite1] => 11
                                                                [Seite2] => 41
                                                            )
    
                                                        [1] => Array
                                                            (
                                                                [Nr] => 3
                                                                [Seite1] => 28
                                                                [Seite2] => 58
                                                            )
    
                                                        [2] => Array
                                                            (
                                                                [Nr] => 2
                                                                [Seite1] => 13
                                                                [Seite2] => 43
                                                            )
    
                                                        [3] => Array
                                                            (
                                                                [Nr] => 1
                                                                [Seite1] => 26
                                                                [Seite2] => 56
                                                            )
    
                                                    )
    
                                            )
    
                                    )
    
                            )
    
                        [1] => Array
                            (
                                [Nr] => CS06
                                [Zylinder] => Array
                                    (
                                        [0] => Array
                                            (
                                                [Nr] => 2
                                                [Farben] => 6
                                                [Bahn] => Array
                                                    (
                                                        [0] => Array
                                                            (
                                                                [Nr] => 5
                                                                [Seite1] => 12
                                                                [Seite2] => 42
                                                            )
    
                                                        [1] => Array
                                                            (
                                                                [Nr] => 4
                                                                [Seite1] => 29
                                                                [Seite2] => 59
                                                            )
    
                                                        [2] => Array
                                                            (
                                                                [Nr] => 3
                                                                [Seite1] => 14
                                                                [Seite2] => 44
                                                            )
    
                                                        [3] => Array
                                                            (
                                                                [Nr] => 2
                                                                [Seite1] => 27
                                                                [Seite2] => 57
                                                            )
    
                                                    )
    
                                            )
    
                                    )
    
                            )
    
                    )
    
            )
    
    )
    Das Array wurde aus einem xml file erstellt und ich will das jetzt iwie so mit foreach verschachteln das ich die Datensätze in eine MySQL DB schreiben kann.... ich hoffe mir kann wer helfen!

    Die DB könnte dann so aussehen:


    PK: druckeinheitid
    FK: bahn1id - bahn4id

    druckeinheit(druckeinheitid, druckeinheitnr, zylindernr, zylinderfarben, bahn1id, bahn2id, bahn2id, bahn3id, bahn4id)

    PK: bahnid
    bahn(bahnid, bahnnr, seite1, seite2)

    Ich hab schon recht viel mit verschachtlungen von for-each schleifen rumexperimentiert aber konnte keinen befriedigenden Lösungsansatz finden.... Danke

  • #2
    arbeite mit einer rekursion. das ist eine funktion, die sich immer wieder selber aufruft, solange eine bedingung vorhanden ist. in deinem fall is_array

    gruß
    peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      Danke für die schnelle antwort, aber hast du dafür vieleicht ein Bsp. oder Link etc?

      ~edit:

      Hab schon was kleines gefunden (google)!



      Code:
      <?php
      
         function echoarray($var)
          {
              if(is_array($var)) 
      {            echo "<ul>\n";  
                foreach($var as $value) {      
                echo "<li>\n";    
                  echoarray($value);     
                 echo "</li>\n";      
            }            echo "</ul>\n";  
            } else {   
               echo $var;   
           }  
        }?>

      Bin mir aber noch nicht so im klaren ob mir das weiterhilft xD Bin für alle tips dankbar ;9
      Zuletzt geändert von onkelgigal; 18.03.2008, 13:27.

      Kommentar


      • #4
        hier werden zwar ordner durchlaufen, ist aber dasselbe in grün.

        gruß
        peter
        Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
        Meine Seite

        Kommentar


        • #5
          Dieser Teil gibt mir einfach mal die kompletten Inhalte des Arrays aus, aber wie find ich raus an welcher stelle im Array er gerade is....

          also z.B. wenn er an der Stelle [BelegungsPlan][DruckEinheit][0][Nr] ist dann Das Feld druckeinheitnr in der db füllen, oder wenn er bei [BelegungsPlan][DruckEinheit][0][Zylinder][0][Nr] ist dann das feld zylindernr füllen. Ich steig da noch nicht ganz so durch !


          Code:
          function echoarray($var)
          {
              if(is_array($var))
          	{
          		
          		foreach($var as $key => $value)
          		{
          			echoarray($value);     
          		}    
          		   
          	}
          	else
          	{        
          		echo $var . "<br>";    
          	}   
          }

          Kommentar


          • #6
            brich bite erst mal bei deinem vorletzten thread den code um! sonst muss man kilometerweit nach rechts scrollen.

            gruß
            peter
            Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
            Meine Seite

            Kommentar


            • #7
              Dazu ist keine Rekursion nötig, da reichen ein paar verschachtelte Schleifen aus.
              Du solltest deine Datenbankstruktur aber erstmal normalisieren! Die bahnXid-Felder solltest du nicht in die druckeinheit-Tabelle schreiben, sondern über eine Referenztabelle miteinhander verknüpfen oder eine Eltern-Kind-Struktur verwenden. Mit druckeinheit zu zylinder scheint es ähnlich zu sein! Du musst halt gucken, wie deine Grundstruktur aussieht. Für mich schaut das so aus:
              Code:
              Belegungsplan
                 Druckeinheit 1
                    Zylinder 1
                       Bahn 1
                       Bahn 2
                       ...
                    Zylinder 2
                       ...
                    ...
                 Druckeinheit 2
                    ...
                 ...

              Kommentar

              Lädt...
              X