Как отсортировать PHP простое дерево XML по дате - PullRequest
0 голосов
/ 23 сентября 2011

Я перемещаюсь по дереву XML следующим образом:

$notesXML = simplexml_load_string(XMLSTRING);

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

Как вы можете видеть, есть атрибут с именем «измененный» как часть дерева XML, что я хочу сделать сейчаспросто распечатать дерево XML в порядке возрастания или убывания на основе даты изменения.Кстати, строка даты имеет следующий формат: «Вторник, 6 сентября 2011 г., 03:49:14».

Спасибо за любую помощь

1 Ответ

2 голосов
/ 23 сентября 2011

Вы можете создать массив элементов, которые вы хотите отсортировать, а затем использовать одну из функций сортировки массива , чтобы изменить их порядок.


В приведенном ниже фрагменте кода используется 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
...