Como fazer loop e exibir (n) feeds usando simpleXML e position()
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
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.