如何安排列车发车时间?PHP自然排序?
我使用下面的代码来输出列车发车时间。但我不能按出发时间把它们分类。我对编码还不熟悉,所以不知道如何解决这个问题。如何使用自然排序或其他解决方案对其进行排序如何安排列车发车时间?PHP自然排序?,php,natural-sort,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_d
<?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;
?>
可以在查看输出示例。您可以使用该函数对数组进行排序
<?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
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)了,所以最好查看一下,看看是否可以找到更干净的方法。您是否参考了
natsort
上的手册?另请参见usort
。您是否参考了natsort
上的手册?另请参见usort
。太棒了!非常感谢,它很有效。但这仍然给我留下了一个问题。发车的列车($metro['DisplayTime']!=“Nu”)显示在最后。Nu现在是瑞典语,所以如果能够在编号的值之前显示“Nu”值,那就太好了。我做了一个“快速修复”并将“现在”出发时间设置为显示:无,这对用户来说不是真正相关的数据。再次感谢你解决了我的问题@我很高兴能帮上忙。您可以尝试添加if($a['DisplayTime']=='Nu')返回-1代码>到cmp函数的开始,将所有Nu移动到顶部。太棒了!非常感谢,它很有效。但这仍然给我留下了一个问题。发车的列车($metro['DisplayTime']!=“Nu”)显示在最后。Nu现在是瑞典语,所以如果能够在编号的值之前显示“Nu”值,那就太好了。我做了一个“快速修复”并将“现在”出发时间设置为显示:无,这对用户来说不是真正相关的数据。再次感谢你解决了我的问题@我很高兴能帮上忙。您可以尝试添加if($a['DisplayTime']=='Nu')返回-1代码>至cmp功能的开始,将所有Nu移动到顶部。