Php 如何订购simpleXML循环

Php 如何订购simpleXML循环,php,xml,simplexml,Php,Xml,Simplexml,我需要按id来订购我的循环 我的xml文档如下所示 <gig id="16"> <date>Fri. 23rd Apr</date> <venue>Sneaky Pete's</venue> <area>Edinburgh</area> <telephone>www.ticketweb.co.uk</telephone>

我需要按id来订购我的循环

我的xml文档如下所示

<gig id="16">
        <date>Fri. 23rd Apr</date>
        <venue>Sneaky Pete's</venue>
        <area>Edinburgh</area>
        <telephone>www.ticketweb.co.uk</telephone>  
        <price>£10</price>
        <time>Time TBA</time>
    </gig>  

星期五。4月23日
鬼鬼祟祟的皮特
爱丁堡
www.ticketweb.co.uk
£10
时间待定
正如你所看到的,我需要根据这个id对字符串进行排序

我的输出代码是

<?php 
foreach ($xml->gig as $dateof){
echo '<tr><td><img src="images/arrow.jpg" /></td><td width="200px" class="loop-Date">' . $dateof->date . '</td><td width="700px">' . $dateof->venue . '</td></tr>';
}
?>
gig作为$dateof){
回显“.$dateof->date.”.$dateof->vention.”;
}
?>

希望这是有意义的

在(标准)xpath中没有order by选项,但在其中有例如

按ID排序:
ksort($array)

foreach($id=>$gig的数组){
回显“.(字符串)$gig->日期。”(字符串)$gig->地点。”;
}

永远不要忘记将SimpleXML对象强制转换为字符串(或整数等)。

我经常看到对XML元素排序的请求,通常基于XPath查询的结果

为此,我为编写了一个方法sortedXPath()。它的签名与相同,只是第一个参数是XPath表达式,它使用XPath表达式而不是数组键。例如,下面是如何检索所有
元素,按其
id
属性排序:

include 'SimpleDOM.php';

$gigs = simpledom_load_string(
    '<gigs>
        <gig id="16">
            <date>Fri. 23rd Apr</date>
        </gig>
        <gig id="15">
            <date>Fri. 16th Apr</date>
        </gig>
    </gigs>'
);

foreach ($gigs->sortedXPath('//gig', '@id') as $gig)
{
    echo 'gig id ', $gig['id'], ' - date: ', $gig->date, "\n";
}
包括“SimpleDOM.php”;
$gigs=simpledom\u加载\u字符串(
'
4月23日星期五
4月16日星期五
'
);
foreach($gigs->sortedXPath('//gig','@id')作为$gig)
{
回显'gig id',$gig['id'],'-date:',$gig->date,“\n”;
}

你比我快:)顺便说一句:在第二个区块的第二行,你需要将
$dateof
替换为
$gig
。谢谢Veger。感谢r3zn1k的帮助:-)我似乎无法让它工作它只是显示为空,没有错误只是看起来它没有获取值?????属性应该通过数组访问读取,无需调用attributes()--
$id=(int)$gig['id'foreach ($array as $id => $gig) {
   echo '<tr><td><img src="images/arrow.jpg" /></td><td width="200px" class="loop-Date">' . (string)$gig->date . '</td><td width="700px">' . (string)$gig->venue . '</td></tr>';
}
include 'SimpleDOM.php';

$gigs = simpledom_load_string(
    '<gigs>
        <gig id="16">
            <date>Fri. 23rd Apr</date>
        </gig>
        <gig id="15">
            <date>Fri. 16th Apr</date>
        </gig>
    </gigs>'
);

foreach ($gigs->sortedXPath('//gig', '@id') as $gig)
{
    echo 'gig id ', $gig['id'], ' - date: ', $gig->date, "\n";
}