我使用的是simpleXML,我希望循环使用position()方法只显示5个节目,但是让它无法工作
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数据
答案 0 :(得分:0)
这感觉就像一个转贴,但无论如何......
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的一部分,它是library extending SimpleXML的一部分,因此重新标记。
答案 1 :(得分:0)
您是否认为您的循环将从item[0]
开始?因此,$i > 5
将输出前6个节点,因为计数将从第0项开始。只需将其更改为$i > 4
即可解决您的问题。