2010-01-27 89 views
0

循環並顯示(n)訂閱源我正在使用simpleXML,但我想通過使用position()方法只顯示5個展示的訂閱源進行循環,但無法讓它進入工作如何使用simpleXML和position()

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

我如何能得到任何建議,這方面的工作

這是我與

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

+0

即使沒有快樂,你也可以使事情發揮作用 - 那麼,問題在哪裏? SCNR ;-)認真地說:沒有機會看到你的輸入XML,所有的賭注爲什麼這種方法不起作用。請編輯您的問題以包含XML文檔。 – Tomalak 2010-01-27 14:40:44

+0

它的一大塊xml,但這個文件給你的一般想法:) – NiseNise 2010-01-27 15:34:57

+0

你嘗試過'foreach($ xml-> sortedXPath('/ ArrayOfCatchUp/TV [...]',...)'? – Tomalak 2010-01-27 17:33:37

回答

0

氏工作的XML數據s感覺像是一個轉發,但無論如何...

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的一部分,因此重新標記。

+0

是的,我有這樣的在一週前,但後來某些時候,它會顯示6所示(作爲一個新節目添加的),所以我希望的位置()方法會更好地工作。 – NiseNise 2010-01-27 20:17:14

+0

這將是*非常*奇怪了,我想不出的情況下這個循環將輸出超過5項以上。如果有的話,初始化'$ i'自己,你自己加一然後輸出超過5,除非你有另一個例程重置'$ i'的值,很可能你的錯誤在其他地方 – 2010-01-28 00:21:56

+0

我確實有這個額外的過濾器這不會顯示未來在它們實際發送之前顯示 $ today_date = date('D j M,g:ia'); if(strtotime($ item-> TransmissionDate) 如何使用jQuery爲'background-position'設置動畫

  • 25. 使用CURL和SimpleXML解析XML響應對象[對象(SimpleXMLElement)[x]使用CURL和SimpleXML
  • 26. 用SimpleXML
  • 27. PHP的SimpleXML使用XPath
  • 28. 使用simpleXML編輯XML
  • 29. android使用simplexml讀取xml
  • 30. 使用SimpleXML讀取屬性