Как зациклить и отобразить (n) каналов с помощью simpleXML и Position()

StackOverflow https://stackoverflow.com/questions/2146182

Вопрос

Я использую 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-данные, с которыми я работаю

http://deniselashlley.co.uk/test/data.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 и это должно решить вашу проблему.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top