2013-04-04 52 views
0

這裏是我的代碼,顯示結果我之後,但有可能通過以列出它們或訂貨XML的foreach導致PHP

$xml = simplexml_load_file('racing.xml'); 

    foreach ($xml->sport[0]->event_path->event_path as $gameinfo): 

    $description  = $gameinfo->description; 
    $getdate   = $gameinfo->event['date']; 
    $event_id   = $gameinfo->event['id']; 
    $date    = substr($getdate,0,10); 

代碼

<?=substr($description, -5)?> 

給我留下與時間的變量,即:14:40,15:50:14:20:18:40等等,但它們按XML的順序而不是按時間顯示。

是否有一行代碼可以包含在日期變量中排序結果?

回答

0

首先是一些一般的提示,以提高你的代碼:

foreach ($xml->sport[0]->event_path->event_path as $gameinfo): 

是一個壞主意。所以,現在你想將$gameinfos排序

$gameinfos = $xml->sport[0]->event_path->event_path; 
foreach ($gameinfos as $gameinfo): 

:相反,我讓自己的禮物,並給予一個新的變量(你可以感謝我以後)。這裏的問題是那些是一個迭代器而不是一個數組。 uasort函數(以及所有其他數組排序函數)將不會對您有所幫助。幸運的是這has been outlined already,你可以迭代轉換爲數組:

$gameinfos = iterator_to_array($gameinfos, FALSE); 

現在$gameinfos是可以排序的數組。要做到這一點獲取定義排序次序(其中$gameinfos應該進行排序)的值,我以爲這是你上面寫的時間substr($description, -5)

$order = array(); 
foreach ($gameinfos as $game) 
    $order[] = substr($game->description, -5) 
; 

array_multisort($order, $gameinfos); 

// $gameinfos are sorted now. 
+0

謝謝,我已經添加了一個答案,以顯示代碼! – Kris 2013-04-09 11:20:28

0

感謝您的時間!我現在有我的代碼爲:

$xml = simplexml_load_file('racing.xml'); 

    $gameinfos = $xml->sport[0]->event_path->event_path; 
    foreach ($gameinfos as $gameinfo): 

    $gameinfos = iterator_to_array($gameinfos, FALSE); 

    $order = array(); 
    foreach ($gameinfos as $game) 
    $order[] = substr($game->description, -5) ; 

    array_multisort($order, $gameinfos); 

    // $gameinfos are sorted now. 

    $description  = $gameinfo->description; 
    $getdate   = $gameinfo->event['date']; 
    $event_id   = $gameinfo->event['id']; 
    $date    = substr($getdate,0,10); 

這只是返回一個結果,但我想我已經走錯了一些沿線?