2010-01-20 69 views
2

我neeed由ID如何訂購的SimpleXML循環

我的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> 

所以爲了我的循環,你可以看到,我需要通過這個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>'; 
} 
?> 

希望這是有道理的

回答

0

有沒有訂單通過在(標準)的xpath選項,但在xsl(t)有例如​​

1
$array = array(); 
foreach ($xml->gig as $gig) { 
    $id = (int)$gig->attributes()->id; 
    $array[$id] = $gig; 
} 

排序ID:ksort($array);

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>'; 
} 

永遠不要忘記鑄SimpleXMLObjects到字符串(或整數,...)。

+0

你是比我快:) BTW:在第二塊的第二行,你需要更換'$ dateof'成' $ gig'。 – Veger 2010-01-20 10:06:14

+0

謝謝Veger。 感謝r3zn1k您的幫助:-) – 2010-01-20 10:09:40

+0

我似乎無法得到它的工作,它只是顯示的空白,沒有錯誤只是看起來像它沒有得到的值????? – 2010-01-20 10:16:00

0

我經常看到請求XML元素,通常基於XPath查詢的結果進行排序。

爲此我寫了一個方法,sortedXPath(),爲SimpleDOM。它具有不同的是第一個參數是XPath表達式和,而不是使用數組鍵它使用XPath表達式相同的簽名array_multisort()。例如,這裏是如何檢索所有<gig/>元素,通過他們的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"; 
}