PHP解析XML并按字母顺序对子节点排序

PHP解析XML并按字母顺序对子节点排序,php,xml,sorting,Php,Xml,Sorting,我有一个XML文件,并将其解析到我的PHP文档中。我想按字母顺序排列XML的子节点,并在选择框中显示它们。有人能帮我吗?我被困在分拣过程中…:) country.xml <?xml version="1.0"?> <countries> <country> <name>Deutschland</name> <league>Bundesliga</league>

我有一个XML文件,并将其解析到我的PHP文档中。我想按字母顺序排列XML的子节点,并在选择框中显示它们。有人能帮我吗?我被困在分拣过程中…:)

country.xml

    <?xml version="1.0"?>
<countries>
    <country>
        <name>Deutschland</name>
        <league>Bundesliga</league>
    </country>
    <country>
        <name>Frankreich</name>
        <league>Ligue 1</league>
    </country>
    <country>
        <name>Osterreich</name>
        <league>Tipp3-Bundesliga</league>
    </country>
    <country>
        <name>England</name>
        <league>Premier League</league>
    </country>
    <country>
        <name>Schweden</name>
        <league>Allsvenskan</league>
    </country>
    <country>
        <name>Kanada</name>
        <league>Canadian Soccer League</league>
    </country>
</countries>

德国
德甲
法兰克帝国
法律1
奥斯特里希
Tipp3德甲
英格兰
英超联赛
施韦登
瑞典足球超级联赛
迦那陀
加拿大足球联盟
我的PHP代码如下所示:

echo "<select>";    
foreach ($newXml as $item) {
   $country=$item->name;
   $league=$item->league;
   echo $league;
   echo "<option>".$country."-".$league."</option>";
}
   echo "</select>";
echo”“;
foreach($newXml作为$item){
$country=$item->name;
$league=$item->league;
回声$league;
回声“$country.”-“$league.”;
}
回声“;

您可以通过三个步骤完成此操作:

// 1. collect
foreach ($newXml as $country) {
  $items[] = "{$country->name} - {$country->league}";
}
// 2. sort (on country and league in this case)
sort($items);
// 3. enumerate
echo '<select>';
foreach ($items as $item) {
  echo '<option>', htmlspecialchars($item), '</option>';
}
echo '</select>';
//1。收集
foreach($newXml作为$country){
$items[]=“{$country->name}-{$country->league}”;
}
// 2. 排序(本例中根据国家和联盟)
分类(项目);
// 3. 列举
回声';
foreach($items作为$item){
echo'',htmlspecialchars($item),'';
}
回声';

您可以在创建选择框之前使用数组

echo "<select>";    
$temp =  array()
foreach ($newXml as $item)
   $temp [$item->name] = $item->league;

ksort($temp);
foreach ($teml as $name => $league) {
   $country=$name;
   $league=$league;
   echo $league;
   echo "<option>".$country."-".$league."</option>";
}
   echo "</select>";
echo”“;
$temp=array()
foreach($newXml作为$item)
$temp[$item->name]=$item->league;
k港口(临时);
foreach($teml作为$name=>$league){
$country=$name;
$league=$league;
回声$league;
回声“$country.”-“$league.”;
}
回声“;

这是一个盲目的射击。。。应该有用。

按字母顺序排列什么?国家队还是联盟队?