Mehrdimensionales Array in zweidimensionales Array ändern.
MuffinMan
- php
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
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
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
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!