2017-04-19 73 views
0

排序有了下面的代碼,我得到留下的到來從API與[DisplayTime]如何將字符串轉換爲數字在PHP中正確的順序

. $output .= "<ul><li><strong>" . $metro['DisplayTime'] . ".</strong> 

目前的時間就得到由只訂第一個號碼,例如
11分鐘。
22:07。
26分鐘。
6分鐘。
8分鐘。

但我需要它來正確完整的電話號碼值進行排序:
下一班列車到達:
6分鐘。
8分鐘。
11分鐘。
26分鐘。
22:07。 (應分鐘的時間後顯示二十四小時制時間)

完整的代碼片段:

<?php 
function cmp($a, $b) 
{ 
    if ($a['DisplayTime'] == $b['DisplayTime']) { 
     return 0; 
    } 
    return ($a['DisplayTime'] < $b['DisplayTime']) ? -1 : 1; 
} 

$url = 'http://api.whateverurl.com'; 
$jsondata = file_get_contents($url); 

$json = json_decode($jsondata,true); 

usort($json['ResponseData']['Metros'], "cmp"); 

foreach ($json['ResponseData']['Metros'] as $metro) { 
    if ($metro['DisplayTime'] != "Now") { 
     $output .= "<ul><li><strong>" . $metro['DisplayTime'] . ".</strong> 
</li>"; 
    } else { 
     $output .= "<ul style='display:none;'><li><strong>" . 
$metro['DisplayTime'] . " departs </strong></li>"; 
    } 
    $output .= "<li>" . $metro['GroupOfLine'] . "</li>"; 
    $output .= "<li> nr " . $metro['LineNumber'] . " </li>"; 

    $output .= "<li> to<strong> " . $metro['Destination'] . "</strong></li> 
</ul>"; 
} 

echo $output; 
?> 
+1

['intval'](http://php.net/manual/en/function.intval.php)然後['sort'](http://php.net/manual/en/function.sort。 PHP)? – Script47

+0

你的比較功能在哪裏? 「CMP」? –

+0

小時怎麼辦?可能會在2小時內結果? 'intval'由'22:07'製成,只是'22',所以這個值將在26分鐘之前放置。您應該先刪除冒號。 – LiTe

回答

0

有多種方式做你設置這取決於。你可以在你的查詢中使用ORDER。你可以在第一個空格中使用php split將整數從字符串中分離出來。 $ numMins = split(「」,$ fullString,2); $ numMins [0]將保存該數字(使用intVal($ numMins [0])使其成爲一個數字)。將該值推入數組,然後對最終數組進行排序。協調「分鐘」。如果你希望顯示的話,可以將其編號。

相關問題