Парсинг сложного XML

228
06 марта 2017, 13:15

Есть xml:

<planeta-kino>
<movies>...</movies>
<showtimes>
<day date="2017-03-04">
<show full-date="2017-03-04 17:20:00" />
<show full-date="2017-03-04 21:45:00" />
<show full-date="2017-03-04 10:30:00" />
...
<day date="2017-03-05">
<show full-date="2017-03-05 17:20:00" />
<show full-date="2017-03-05 21:45:00" />
<show full-date="2017-03-05 10:30:00" />
...
итд

Использую 2 цикла, что бы пробежаться по всем < day > и по всем вложенным < show >

foreach ($data->showtimes->day as $day){
foreach ($data->showtimes->day->show as $show){
        echo $show['full-date']."<br>";
}
}

Но результат я всегда получаю только по первому блоку < day>< show>

2017-03-04 17:20:00 2017-03-04 21:45:00 2017-03-04 10:30:00 2017-03-04 17:20:00 2017-03-04 21:45:00 2017-03-04 10:30:00 ... итд

т.е. всегда за 2017-03-04 число и ни как не могу добраться до 2го блока < show>. Что в моём цикле не так, подскажите?

Answer 1

Попробуйте

foreach ($data->showtimes->day as $day){
  foreach ($day->show as $show){
    echo $show['full-date']."<br>";
  }
}
Answer 2

Во внутреннем foreach нужно использовать полученную переменную из внешнего foreach, иначе это не имеет смысла.

foreach ($data->showtimes->day as $day){
                                    |
             ------------------------
             ↓
  foreach ($day->show as $show){
    echo $show['full-date']."<br>";
  }
}
READ ALSO
header(&#39;Location:&#39;) не перенаправляет

header('Location:') не перенаправляет

Если кратко то есть функция

258
Как правильно сделать условие и запрос к БД?

Как правильно сделать условие и запрос к БД?

Подскажите, пожалуйста, как сделать, чтобы правильно заносились данные, а то 5 раз повторяетсяНужно, чтобы при пополнении от определенной...

232
Как работает запись if($var){ &hellip; } или if(!$var){ &hellip; }?

Как работает запись if($var){ … } или if(!$var){ … }?

Друзья всем привет!!! помогите разобраться раз и навсегда с этой записью, до сих пор сильно путаюсь, благодарю вас заранее

284