我在这个网站上搜索并找到了几个解决方案,这对我不起作用。我的情况是我在XML中执行XPath搜索(包含函数),并列出结果。我希望按字母顺序列出这些结果。结果放在一个数组中,如下所示:
Array
(
[0] => SimpleXMLElement Object
(
[DISID] => 2160364
[StopName] => Nationtheatret
)
[1] => SimpleXMLElement Object
(
[DISID] => 1118735
[StopName] => Huldrefaret
)
[2] => SimpleXMLElement Object
(
[DISID] => 2200752
[StopName] => Jernbanetorget
)
)
我列出的数据如下:
$xml = new SimpleXMLElement(file_get_contents("StopPointList.xml"));
$query = strtolower($_GET["q"]);
$upper = "ABCDEFGHIJKLMNOPQRSTUVWXYZÆØÅ";
$lower = "abcdefghijklmnopqrstuvwxyzæøå";
$result = $xml->xpath("//StopPoint[contains(translate(StopName, '$upper', '$lower'), '$query')]");
foreach ($result as $stop)
{
echo '<li><a href="stops.php?id='.$stop->DISID.'">'."\n";
echo "\t".'<span class="name">'.$stop->StopName.'</span>'."\n";
echo "\t".'<span class="arrow"></span>'."\n";
echo '</a></li>'."\n";
}
如何(以及在何处)我可以按字母顺序对结果进行排序?
答案 0 :(得分:4)
在foreach循环中,您需要将数据复制到另一个数据结构中,对该结构进行排序,然后输出。 These functions may help
答案 1 :(得分:4)
为了对对象进行排序,您需要一个比较功能。例如,要按StopName
进行比较,请使用以下内容:
function cmp ($a, $b)
{
return strcmp($a->StopName, $b->StopName);
}
然后,在xpath查询之后和foreach
之前,添加此行以进行实际排序:
usort($result, "cmp");