2012-08-13 119 views
0

我找不到這個問題的確切副本,因爲我的節點是數字鍵。用PHP按日期排序多維XML

我需要排序這個XML日期 - 最新第一:

[article] => Array 
    (
     [0] => SimpleXMLElement Object 
      (
       [value] => some value 
       [date] => 2012-08-13 18:54:09 
      ) 

     [1] => SimpleXMLElement Object 
      (
       [id] => some more value 
       [date] => 2012-08-09 10:24:06 
      ) 

     [2] => SimpleXMLElement Object 
      (
       [id] => another value 
       [date] => 2012-08-11 20:45:44 
      ) 
    ) 

我怎樣才能最好地做到這一點 - 可能頭也不回的XML到一個PHP數組和排序它,然後。

+2

Both http://stackoverflow.com/questions/11940042/sort-multidimensional-xml-with-php-by-date和http://stackoverflow.com/questions/3998722/how-to-sorta-a-多維xml文件對我來說似乎很好。如果你不想要'xsort()'和'array_multisort()',那麼只需使用'usort()'與一個自定義函數比較日期,不需要? – Savageman 2012-08-13 18:35:00

+0

我試過了,但它不起作用,因爲數組是xml對象 – 2012-08-14 13:02:24

回答

0

從您的示例中,它看起來像已經有一個對象數組,因此usort將正常工作。

回調會是這個樣子:

function compare_node_dates($a, $b) 
{ 
    return 
     strtotime((string)$b->date) 
     - 
     strtotime((string)$a->date); 
} 

但是,如果你的最外層變量實際上不是一個數組,沒有辦法我知道這樣做,而無需創建一個數組,分選並用它來構建全新的XML。