2011-11-09 26 views
1

可能重複:
Sorting xml with simpleXML/xpath?通過X用SimpleXML和XPath排序

我使用SimpleXML,我想通過它有意見數量排序名單。我有一個運行後的排序如下通用的foreach功能:

if($filter=="popular"){ 
     $sort=$x->xpath('//example[views]'); 
     function cmp($a, $b){ 
       if ($a->id > $b->id) return -1; 
       if ($a->id < $b->id) return 1; 
       return 0; 
      } 
     usort($sort, cmp); //this isn't working? 
    } else { 
     $sort = $x->example; 
    } 

    foreach($sort as $q){ ... 

我的XML看起來像:

<list> 
     <example> 
      <id>1</id> 
      <name>bob<name> 
      <views>5</views> 
     </example> 
     <example> 
      <id>2</id> 
      <name>fred<name> 
      <views>18</views> 
    </example> 
    <example> 
     <id>3</id> 
     <name>alfie<name> 
     <views>0</views> 
    </example> 
</list> 

所以,我只是需要一種方法通過的意見逐一例子有量排序在DESC順序 - 最低的意見,最低的意見。

任何想法?

非常感謝:)

+0

我沒有使用XSLT和他們沒有在這個問題中使用simpleXML的外觀......不幸的是! – Tim

+0

參見Sjoerd在相關問題中的回答。 – Gordon

+0

這也沒有回答我的問題,它仍然沒有按順序。 – Tim

回答

0

那將是因爲你正在使用的函數名作爲一個常量,需要使用它作爲一個像這樣的字符串:usort($sort, 'cmp');代替usort($sort, cmp);

+0

這是操作代碼中的又一個錯誤,但不是原因。 php將使用cmp函數進行排序。 – Gordon

+1

@戈登真實的,只發出通知10倍的頭像:) – Catalin