这个问题在这里已经有了答案:
我如何在PHP中对数组和数据进行排序? 8个答案我正在使用下面的代码来输出火车出发时间。 但我无法按照出发时间对它们进行排序。 我是新来的编码,所以不知道如何解决这个问题。 我如何使用自然排序或其他解决方案来进行排序?
<?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; ?>输出示例可以在http://beta.tunnelbanakarta.se/slussen查看
This question already has an answer here:
How can I sort arrays and data in PHP? 10 answersI'm using the below code to output train departure times. But I can't get them sorted by time of departure. I'm new to coding so not sure how to solve this. How can I use natural-sort or some other solution to get this sorted?
<?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; ?>Example of the output can be viewed at http://beta.tunnelbanakarta.se/slussen
最满意答案
您可以使用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)之后已经很长时间了,所以最好仔细研究一下,看看能否找到一种更干净的方式。
You could use the usort() function to sort the array.
<?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; ?>Should work but it's been a long time since I used these function (or PHP for that matter) so best look into it to see if you can find a cleaner way.
更多推荐
发布评论