PHP - проблема простых атрибутов XML - PullRequest
1 голос
/ 14 июня 2011

Я использую PHP и Простой XML.

Я использую цикл, который не работает, как ожидалось:

foreach($item->Image->attributes()->source as $key => $value)
{
    echo $value;
}

В foreach я пытаюсь сказать, чтоЯ хочу получить «источник» изображения, который указан в атрибутах.

$item выше создан с циклом вокруг моего кода выше foreach($xml_content->Section->Item as $item {}, (если вам нужно знать, откуда оно пришлоfrom)

Мой объект выглядит так:

object(SimpleXMLElement)#36 (4) {
    ["Text"]=>
        string(15) "Vinbergs socken"
    ["Description"]=>
        string(73) "Vinbergs socken ingick i Faurås härad och ligger i Falkenbergs kommun.
    "
    ["Url"]=>
        string(44) "http://sv.wikipedia.org/wiki/Vinbergs_socken"
    ["Image"]=>
         object(SimpleXMLElement)#38 (1) {
             ["@attributes"]=>
                  array(3) {
                      ["source"]=>
                            string(113) "http://upload.wikimedia.org/wikipedia/commons/thumb/2/25/Faur%C3%A5s_Vinberg.svg/50px-Faur%C3%A5s_Vinberg.svg.png"
                      ["width"]=>
                          string(2) "50"
                      ["height"]=>
                            string(2) "41"
                      }
             }
     }

Что не так с моим циклом в начале моего сообщения?

1 Ответ

5 голосов
/ 14 июня 2011

Вы пытаетесь перебрать строку, а не массив

$item->Image->attributes()->source

Чтобы перебрать все атрибуты элемента Image, используйте

foreach ($item->Image->attributes() as $attributeName => $attributeValue) {

Если вы просто хотите вывестизначение атрибута источника, не повторяйте, а используйте сокращение

echo $item->Image['source']

См. demo и SimpleXml Основные примеры использования в руководстве по PHP

...