Как зациклить и отобразить (n) каналов с помощью simpleXML и Position()
Вопрос
Я использую simpleXML и хочу зациклить канал, чтобы отображать только 5 шоу с использованием метода Position(), но не получаю удовольствия от его работы.
foreach($xml->sortedXPath('TV[position() < 5 and ProgrammeName="MTV"]', 'TransmissionDate', SORT_DESC) as $i => $item)
{
print "<a href='?v=".$item->ID."&a=false' class='link'>\n";
print "\t<span class=\"text\">" .trunc($item->ShortSynopsis,25, " "). "</span>\n";
print "\t</a>";
}
любые предложения о том, как я могу заставить это работать
это XML-данные, с которыми я работаю
Нет правильного решения
Другие советы
Похоже на репост, но всё равно...
NiseNise хочет отсортировать узлы и сохранить первые 5.Проблема в том, что это выражение XPath выбирает первые 5 узлов в документе, а затем метод их сортирует.Что вам нужно сделать, это отсортировать все тогда узлы обрабатывают только первые 5.
foreach($xml->sortedXPath('TV[ProgrammeName="MTV"]', 'TransmissionDate', SORT_DESC) as $i => $item)
{
if ($i > 5)
{
break;
}
print "<a href='?v=".$item->ID."&a=false' class='link'>\n";
// etc...
}
Я забыл упомянуть, sortedXPath()
не является частью SimpleXML, это часть библиотека, расширяющая SimpleXML, отсюда и повторная маркировка.
Считали ли вы, что ваш цикл начнется с item[0]
?Так $i > 5
выведет первые 6 узлов, поскольку отсчет начнется с позиции 0.Просто измените его на $i > 4
и это должно решить вашу проблему.