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://deniselashley.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はアイテム 0 から始まるため、最初の 6 つのノードが出力されます。単純に変更する$i > 4と、問題が解決するはずです。

于 2010-03-30T08:24:44.700 に答える