0
我试图按字母顺序对节点列表进行排序,然后在SimpleXML中回显它们。我使用一个类似这里引用的usort功能:Usort不完全排序
Sorting Results returned by SimpleXML, and Xpath in 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>
正如你可以看到,他们不是按字母顺序排列。我错过了什么吗?任何帮助表示赞赏。
注:* $ use_keys *参数需要被设置到否则返回FALSE阵列只会有一个条目。我错过了。 – hakre
有道理。感谢澄清! – Batfan
还有一件事,我在回复数据以从前一节点和下一节点获取一些数据之前正在使用xpath查询。这工作正常,除了它似乎没有拿起这个新的排序顺序。你可以在这里看到代码http://db.tt/J1ZOLeKN有什么想法? – Batfan