2011-09-22 176 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