如何安排火车发车时间? PHP自然排序?
How to organize train departure times? PHP natural sort?
我正在使用以下代码输出火车出发时间。但我无法按出发时间对它们进行排序。我是编码新手,所以不确定如何解决这个问题。我如何使用自然排序或其他解决方案来排序?
<?php
$url = 'http://api.sl.se/api2/realtimedepartures.json?key=xxxx&siteid=9192&timewindow=30';
$jsondata = file_get_contents($url);
$json = json_decode($jsondata,true);
foreach ($json['ResponseData']['Metros'] as $metro) {
if ($metro['DisplayTime'] != "Nu") {
$output .= "<ul><li><strong>".$metro['DisplayTime'].".</strong> </li>";
} else {
$output .= "<ul><li><strong>".$metro['DisplayTime']." avgår </strong></li>";
}
$output .= "<li>".$metro['GroupOfLine']."</li>";
$output .= "<li> nr ".$metro['LineNumber']." </li>";
$output .= "<li> till<strong> ".$metro['SafeDestinationName']."</strong></li></ul>";
}
echo $output;
?>
查看输出示例
您可以使用 usort() 函数对数组进行排序。
<?php
function cmp($a, $b)
{
if ($a['DisplayTime'] == $b['DisplayTime']) {
return 0;
}
return ($a['DisplayTime'] < $b['DisplayTime']) ? -1 : 1;
}
$url = 'http://api.sl.se/api2/realtimedepartures.json?key=xxxx&siteid=9192&timewindow=30';
$jsondata = file_get_contents($url);
$json = json_decode($jsondata,true);
usort($json['ResponseData']['Metros'], "cmp");
foreach ($json['ResponseData']['Metros'] as $metro) {
if ($metro['DisplayTime'] != "Nu") {
$output .= "<ul><li><strong>" . $metro['DisplayTime'] . ".</strong> </li>";
} else {
$output .= "<ul><li><strong>" . $metro['DisplayTime'] . " avgår </strong></li>";
}
$output .= "<li>" . $metro['GroupOfLine'] . "</li>";
$output .= "<li> nr " . $metro['LineNumber'] . " </li>";
$output .= "<li> till<strong> " . $metro['SafeDestinationName'] . "</strong></li></ul>";
}
echo $output;
?>
应该可以,但我已经有很长时间没有使用这些功能了(或者 PHP 就此而言)所以最好研究一下,看看是否可以找到更简洁的方法。
我正在使用以下代码输出火车出发时间。但我无法按出发时间对它们进行排序。我是编码新手,所以不确定如何解决这个问题。我如何使用自然排序或其他解决方案来排序?
<?php
$url = 'http://api.sl.se/api2/realtimedepartures.json?key=xxxx&siteid=9192&timewindow=30';
$jsondata = file_get_contents($url);
$json = json_decode($jsondata,true);
foreach ($json['ResponseData']['Metros'] as $metro) {
if ($metro['DisplayTime'] != "Nu") {
$output .= "<ul><li><strong>".$metro['DisplayTime'].".</strong> </li>";
} else {
$output .= "<ul><li><strong>".$metro['DisplayTime']." avgår </strong></li>";
}
$output .= "<li>".$metro['GroupOfLine']."</li>";
$output .= "<li> nr ".$metro['LineNumber']." </li>";
$output .= "<li> till<strong> ".$metro['SafeDestinationName']."</strong></li></ul>";
}
echo $output;
?>
查看输出示例
您可以使用 usort() 函数对数组进行排序。
<?php
function cmp($a, $b)
{
if ($a['DisplayTime'] == $b['DisplayTime']) {
return 0;
}
return ($a['DisplayTime'] < $b['DisplayTime']) ? -1 : 1;
}
$url = 'http://api.sl.se/api2/realtimedepartures.json?key=xxxx&siteid=9192&timewindow=30';
$jsondata = file_get_contents($url);
$json = json_decode($jsondata,true);
usort($json['ResponseData']['Metros'], "cmp");
foreach ($json['ResponseData']['Metros'] as $metro) {
if ($metro['DisplayTime'] != "Nu") {
$output .= "<ul><li><strong>" . $metro['DisplayTime'] . ".</strong> </li>";
} else {
$output .= "<ul><li><strong>" . $metro['DisplayTime'] . " avgår </strong></li>";
}
$output .= "<li>" . $metro['GroupOfLine'] . "</li>";
$output .= "<li> nr " . $metro['LineNumber'] . " </li>";
$output .= "<li> till<strong> " . $metro['SafeDestinationName'] . "</strong></li></ul>";
}
echo $output;
?>
应该可以,但我已经有很长时间没有使用这些功能了(或者 PHP 就此而言)所以最好研究一下,看看是否可以找到更简洁的方法。