Autor Zpráva
Petr-K
Profil *
Zdravím,
pořeboval bych od vas poradit.
Jak z objektu, který vznikne načtením xml souboru pomocí SimpleXML, vytvořit dvourozměrné pole.

Načtení souboru:
$data = simplexml_load_file('gallery.xml');


Struktura souboru gallery.xml:
<db_gallery>
<gallery>
<name>AutoGP Endurance Brno</name>
<folder>20110619-autoGP-endurance-brno</folder>
...
</gallery>
<gallery>
<name>WTCC Brno 2011</name>
<folder>20110619-WTCC-brno-2011</folder>
...
</gallery>
...
</db_gallery>


Objekt pak vypadá takto:
SimpleXMLElement Object
(
[gallery] => Array
(
[0] => SimpleXMLElement Object
(
[name] => AutoGP Endurance Brno
[folder] => 20110619-autoGP-endurance-brno
)
[1] => SimpleXMLElement Object
(
[name] => WTCC Brno 2011
[folder] => 20110619-WTCC-brno-2011
)
)
)


Potřeboval bych získat toto:
Array
(
[0] => Array
(
[name] => AutoGP Endurance Brno
[folder] => 20110619-autoGP-endurance-brno
)
[1] => Array
(
[name] => WTCC Brno 2011
[folder] => 20110619-WTCC-brno-2011
)
)


Dvourozměrné pole jsem se pokoušel vytvořit pomocí foreach (foreach mi zatím neříká pane :-) bohužel):
foreach($data->gallery as $value){
   $newGallery[] = array('name'=>$value->name, 'folder'=>$value->folder);
}


Výsledek foreach je následující, proč? A jak získat požadovanou podobu?
Array
(
[0] => Array
(
[name] => SimpleXMLElement Object
(
[0] => AutoGP Endurance Brno
)
[folder] => SimpleXMLElement Object
(
[0] => 20110619-autoGP-endurance-brno
)
)
[1] => Array
(
[name] => SimpleXMLElement Object
(
[0] => WTCC Brno 2011
)
[folder] => SimpleXMLElement Object
(
[0] => 20110619-WTCC-brno-2011
)
)
)


Díky moc.
P.
Dero
Profil
Petr-K: Pokud chcete s atributem prvku zacházet jako s řetězcem, musíte použít přetypování.

foreach($data->gallery as $value){
   $newGallery[] = array('name'=>(string)$value->name, 'folder'=>(string)$value->folder);
}

SimpleXML ve výchozím nastavení reprezentuje atributy vždy coby objekt.
Petr-K
Profil *
Dero:
Perfektní, jak jednoduché to bylo, díky moc!
Kde se mohu vice dočíst o přetypování?
Ještě jednou díky!
Dero
Profil
Petr-K: Rádo se stalo! Pokud umíte anglicky, pak je nejlepším zdrojem informací tato stránka: http://php.net/manual/en/language.types.type-juggling.php

Spolu s tím doporučuji pročíst i základní dokumentaci k SimpleXML, která je dostupná zde: http://php.net/manual/en/simplexml.examples-basic.php, těch nepříliš intuitivních prvků totiž obsahuje povícero.
Petr-K
Profil *
Díky, angličtina by neměla být problém :)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0