MuffinMan: Mehrdimensionales Array in zweidimensionales Array ändern.

Guten Tag geschätzte Forenuser

Ich habe ein Problem, wobei ich nicht weiter komme. Vielleicht hat jemand von euch eine Idee, wie ich das Problem lösen kann.

Ich besitze ein Mehrdimensionales Array ( Dreidimensionales ) und möchte dies eigentlich als zweidimensionales Array haben, um es dann mit einer foreach() Schlaufe in die Datenbank zu schrieben. Falls ihr euch fragt, warum ich wohl nicht einfach ein zweidimensionales Array erstellt, habe ich euch folgende Antwort.

Ich verwende den unserializer von Pear um ein XML in ein Array umzuwandeln.
Das XML sieht wie folgt aus:

______________________________________________________________________

  
  
<?xml version="1.0" encoding="UTF-8"?>  
<RaumbelegungsdatenExportDataSet xmlns="http://eventows.fhnw.ch/EventoExpSvcV21/EventoRaumbelegungsdatenExport.xsd">  
  <RaumbelegungsdatenExport>  
    <IDAnlass>6040035</IDAnlass>  
    <GebaeudeKrz>PM</GebaeudeKrz>  
    <GebaeudeAdresse>Peter Merian-Strasse 86</GebaeudeAdresse>  
    <LektionVon>2008-11-07T07:50:00+01:00</LektionVon>  
    <LektionBis>2008-11-07T09:30:00+01:00</LektionBis>  
    <AnlassBezeichnung>äöüWirtschaftsmathematik 1 Ka</AnlassBezeichnung>  
    <Zeit>07:50 - 09:30</Zeit>  
    <Raum>PM-1.01  Klassenzimmer</Raum>  
    <Dozent/>  
    <Datum>07.11.2008</Datum>  
  </RaumbelegungsdatenExport>  
</RaumbelegungsdatenExportDataSet>  

______________________________________________________________________

Folgendes Resultat erhlate ich, wenn ich es mit "echo <pre>" ausgebe:

______________________________________________________________________
Array
(
    [RaumbelegungsdatenExport] => Array
        (
            [0] => Array
                (
                    [IDAnlass] => 6040035
                    [GebaeudeKrz] => PM
                    [GebaeudeAdresse] => Peter Merian-Strasse 86
                    [LektionVon] => 2008-11-07T07:50:00+01:00
                    [LektionBis] => 2008-11-07T09:30:00+01:00
                    [AnlassBezeichnung] => äöüWirtschaftsmathematik 1 Ka
                    [Zeit] => 07:50 - 09:30
                    [Raum] => PM-1.01  Klassenzimmer
                    [Dozent] =>
                    [Datum] => 07.11.2008
                )
        )

)
______________________________________________________________________

Soweit so gut... jedoch begreife ich nicht, wie ich das jetzt in einer Foreach-Schleife in die Datenbank bekomme. Alle Beispiele  mit der Foreach-
Schleife sind mit einem zweidimensionalen Array vorgeführt. Das Einfachste
wäre es also, das dreidimensionale Array in ein zweidimensionales Array
umzuwandeln. da ich die Erste "Ebene" des Arrays gar nicht benötige (also
[RaumbelegungsdatenExport]).

Besten Dank und freundliche Gürsse
Der Ahnungslose MuffinMan

  1. Guten Tag,

    Soweit so gut... jedoch begreife ich nicht, wie ich das jetzt in einer Foreach-Schleife in die Datenbank bekomme. Alle Beispiele  mit der Foreach-
    Schleife sind mit einem zweidimensionalen Array vorgeführt.

    Für jede Dimension brauchst du eine eigene foreach-Schleife, die sind also geschachtelt:

    foreach ( $array as key_1 => val_1 )
    {
      foreach ( $val_1 as key_2 => val_2 )
      {
        // abarbeiten von Feld val_2 in array val_1
      }
    }

    Kalle

    1. Hallo Kalle

      Besten dank für deine Antwort. Ich werde es morgen früh gleich einmahl testen. das hatte ich scheinbar irgendwie falsch verstanden aber jetzt ist mir das ganze klar.

      Schöne Grüsse
      MuffinMan

      Guten Tag,

      Soweit so gut... jedoch begreife ich nicht, wie ich das jetzt in einer Foreach-Schleife in die Datenbank bekomme. Alle Beispiele  mit der Foreach-
      Schleife sind mit einem zweidimensionalen Array vorgeführt.

      Für jede Dimension brauchst du eine eigene foreach-Schleife, die sind also geschachtelt:

      foreach ( $array as key_1 => val_1 )
      {
        foreach ( $val_1 as key_2 => val_2 )
        {
          // abarbeiten von Feld val_2 in array val_1
        }
      }

      Kalle

  2. Hi!

    Das XML sieht wie folgt aus:
    <RaumbelegungsdatenExportDataSet xmlns="http://eventows.fhnw.ch/EventoExpSvcV21/EventoRaumbelegungsdatenExport.xsd">
      <RaumbelegungsdatenExport>
        <IDAnlass>6040035</IDAnlass>
        [...]
      </RaumbelegungsdatenExport>
    </RaumbelegungsdatenExportDataSet>

    Die Frage ist, wo darin die Wiederholungen auftreten. Kommen mehrere RaumbelegungsdatenExport-Elemente vor?

    Array
    (
        [RaumbelegungsdatenExport] => Array
            (
                [0] => Array
                    (
                        [IDAnlass] => 6040035
                        [...]
                    )
            )

    )
    Das Einfachste wäre es also, das dreidimensionale Array in ein zweidimensionales Array umzuwandeln. da ich die Erste "Ebene" des Arrays gar nicht benötige (also [RaumbelegungsdatenExport]).

    Wenn ich mal davon ausgehe, dass RaumbelegungsdatenExport nur einmal vorkommt und darin mehrere Arrays enthalten sind (0 bis n) greifst du einfach auf den Inhalt von $array['RaumbelegungsdatenExport'] zu:

    foreach ($array['RaumbelegungsdatenExport'] as $raumbelegung)
      echo $raumbelegung['IDAnlass']; // oder was auch immer

    Lo!