2011-09-22 205 views
0

我通過一個XML樹這樣navgating一個PHP簡單的XML樹:如何按日期排序

$notesXML = simplexml_load_string(XMLSTRING); 

foreach($notesXML as $thenote){ 
    $noteAttr = $thenote->attributes(); 
    echo $noteAttr['modified']; 
} 

正如你可以看到有作爲XML樹的一部分,稱之爲「改良」的屬性,我現在想要做的就是根據修改日期按升序或降序打印XML樹。 BTW日期字符串格式是這樣的:「2011年9月6日星期二下午三時49分14秒」

感謝所有幫助

回答

2

你可以建立你要排序的元素的數組,然後使用其中一個array sorting functions重新排列它們。


的片段下方採用array_multisort()按降序排列對它們進行排序。 DateTime::createFromFormat()用於從日期字符串中獲取Unix時間戳。

$notes = array(); 
$dates = array(); 
foreach ($notesXML as $note) { 
    $notes[] = $note; 
    $dates[] = DateTime::createFromFormat('l jS \of F Y H:i:s A', $note['modified'])->getTimestamp(); 
} 
array_multisort($dates, SORT_DESC, $notes); 

// Loop over $notes however you like