Я пытаюсь отсортировать список узлов по алфавиту, прежде чем отображать их в SimpleXML. Я использую функцию usort, аналогичную указанной здесь:
Сортировка результатов, возвращаемых SimpleXML и Xpath в PHP
Вот мой код:
$xQuery = $xml->comiclist->comic;
function cmp ($a, $b) {
return strcmp(
$a->mainsection->series->sortname,
$b->mainsection->series->sortname
);
}
usort($xQuery, "cmp");
foreach ($xQuery as $comic) :
Проблема в том, что это работает только частично. Большинство элементов сгруппированы правильно, но некоторые совершенно неуместны. Как видно из функции, каждый узел $ comic сортируется по его дочернему элементу «mainsection-> series-> sortname».
Вот пример порядка, который он генерирует:
<sortname>New Avengers: Illuminati, Vol. 2</sortname>
<sortname>New Avengers: Illuminati, Vol. 2</sortname>
<sortname>Nova</sortname>
<sortname>New X-Men</sortname>
<sortname>Nation X</sortname>
<sortname>Namor, The Sub-Mariner Annual</sortname>
Как видите, они расположены не в алфавитном порядке. Я что-то упускаю? Любая помощь приветствуется.