SimpleXMLでノードをエコーアウトする前に、ノードのリストをアルファベット順に並べ替えようとしています。ここで参照されているものと同様のusort関数を使用しています。
SimpleXMLおよびPHPのXpathによって返される結果のソート
これが私のコードです:
$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>
ご覧のとおり、アルファベット順ではありません。私は何かが足りないのですか?どんな助けでも大歓迎です。