Autor Zpráva
vojja01
Profil *
1) Mám XML soubor preferences.xml mající shruba takovou strukturu:
<settings>
 <pref>
  <name>advanced_effects</name>
  <value>false</value>
 </pref>
 <pref>
  <name>wallpaper_name</name>
 ...
</settings>
2) PHP, které jej zpracuje:
$settingsX = simplexml_load_file("preferences.xml");
foreach($settingsX->pref as $pref):
  $settings[$pref->name] = $pref;
endforeach;
echo $settings["advanced_effect"]->val;
...
PHP načítá každou položku do pole, ve kterém je název položky podle elementu <name>. Hlásí to chybu Warning: Illegal offset type in settings.php on line 3. Co jsem se dočetl, tak vím, že chyba je v tom zápisu $settings[$pref->name] = $pref;. Ale nevím jak jinak to napsat, aby to dělalo něco takového.
Díky předem za každou odpověď.
Tori
Profil
vojja01:
$pref->name vrací opět instanci SimpleXMLElement. Přetypujte na řetězec:
$settings[(string) $pref->name] = $pref;
// funguje i tento nepěkný zápis:
$settings[$pref->name->__toString()] = $pref;
// anebo nejjednodušeji:
$settings["$pref->name"] = $pref;

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: