0

我正在使用 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 数据

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

4

2 回答 2

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 的一部分,它是扩展 SimpleXML 的库的一部分,因此需要重新标记。

于 2010-01-27T18:38:39.153 回答
0

您是否考虑过您的循环将从 开始item[0]?因此$i > 5将输出前 6 个节点,因为计数将从项目 0 开始。只需将其更改为即可$i > 4解决您的问题。

于 2010-03-30T08:24:44.700 回答