Проблемы с циклом foreach в элементе SimpleXMLelement

0

Я пытаюсь научить себя обрабатывать команду/объект SimpleXMP_read_file.

Поэтому я глубоко рассмотрел проблему в атрибутах simpleXMLElement и foreach (атрибуты simpleXMLElement и foreach).

скопировал его пополам в мой PHP-браузер и запустил его.

test.xml:

<?xml version="1.0" encoding="utf-8"?>
<response result="0">
    <reports>
        <get count="2">
            <row a="first" b="second" comment="test" c=""/>
            <row a="first1" b="second2" comment="test2" c=""/>
        </get>
    </reports>
</response>

изменил php следующим образом: PHP:

$xml = simplexml_load_file('test.xml');
$rows = $xml->xpath('reports/get/row');
foreach($rows as $row)
{

        foreach($row->attributes() as $key) 
        {               
           echo ('test: '.$key['a'] .' '.$key['b'].' '.$key['comment'].' '.$key['c'].'<br>') ;
        }
}

Я не получаю ошибок, но только 2 строки:

test
test

Нет данных.

Может ли кто-нибудь сказать мне, почему?

Теги:

2 ответа

1

Вы делаете foreach над $row->attributes(). Поэтому каждая итерация цикла является другим атрибутом. Ни один из атрибутов не имеет значения $key['a'].

Вы, вероятно, захотите сделать:

foreach($rows as $row){
    $key = $row->attributes();
    echo 'test: '.$key['a'] .' '.$key['b'].' '.$key['comment'].' '.$key['c'].'<br>';
}
0

после выполнения print_r($rows); У меня есть следующее. Теперь вы можете получить доступ к элементам массива и объектам класса непосредственно с помощью $row->attributes['a'] и т.д.

 foreach($rows as $row){
     $xmlObjElement = json_decode(json_encode((array)$row), TRUE);
     foreach($xmlObjElement as $fo){
        print_r( $fo );
     }
 }

Вывод:

Array
(
    [a] => first1
    [b] => second2
    [comment] => test2
    [c] =>
)

Теперь вы можете получить доступ, как $fo['a'] т.д....

  • 0
    Почему вы делаете json_decode(json_encode()) ?
  • 0
    преобразовать объект в массив.
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню