Pergunta

Estou usando simpleXML e quero fazer um loop no feed para exibir apenas 5 programas usando o método position(), mas não tenho prazer em fazê-lo funcionar

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>";
}

alguma sugestão sobre como posso fazer isso funcionar

estes são os dados XML com os quais estou trabalhando

http://deniselashlley.co.uk/test/data.xml

Nenhuma solução correta

Outras dicas

Isso parece um repost, mas de qualquer maneira ...

Nisenise quer classificar nós e depois manter o top 5. O problema é que essa expressão XPath seleciona os 5 primeiros nós no documento e o método os classifica. O que você precisa fazer é classificar tudo Os nós então processam apenas os primeiros 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...
}

Eu esqueci de mencionar, sortedXPath() não faz parte do simplexml, faz parte de um Biblioteca que estende simplexml, daí a remagmentando.

Você já considerou que seu loop começará em item[0]?Então $i > 5 gerará os primeiros 6 nós porque a contagem começaria no item 0.Basta alterá-lo para $i > 4 e isso deve resolver o seu problema.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top