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