从外部API排序数组

时间:2018-01-21 18:57:06

标签: php arrays api sorting

我在这里挠头。我是新手。我一直在强迫自己找到这个,而不是总是依靠你的帮助。但是我已经把手指放在这个上了。

我要做的是对从外部API(代码中的链接)获取的数组进行排序,并且我尝试整个列表的所有内容都会消失或不执行任何操作。我一遍又一遍地阅读this documentation,我似乎无法绕过它

我正在尝试将“ realArrival ”从低到高排序。

Anywho在这里是我的代码:

    <?php
    $url = 'http://apis.is/flight?language=en&type=arrivals';
    $json = file_get_contents($url);
    $results = json_decode($json, TRUE);
    echo '<table class="highlight responsive-table purple darken-4">';
        echo "<tr>";
            echo '<th>Date</th>';
            echo '<th>Flight Number</th>';
            echo '<th>Airline</th>';
            echo '<th>From</th>';
            echo '<th>Schedule. Time</th>';
            echo '<th>Status</th>';
        echo "</tr>";
    foreach ($results['results'] as $item => $val) {
        echo "<tr>";
            echo '<td>'.$item = $val['date'].'</td>';
            echo '<td>'.$item = $val['flightNumber'].'</td>';
            echo '<td>'.$item = $val['airline'].'</td>';
            echo '<td>'.$item = $val['from'].'</td>';
            echo '<td>'.$item = $val['plannedArrival'].'</td>';
            echo '<td>'.$item = $val['realArrival'].'</td>';
        echo '</tr>';
    }
    echo '</table>';
    ?>

提前致谢!

2 个答案:

答案 0 :(得分:1)

我没有看到任何试图排序的代码......

也就是说,您可能想要使用usort()。您需要根据比较结果创建一个返回-1,0或1的适当函数,然后在调用usort()时引用该函数。

答案 1 :(得分:0)

您需要先使用usort()对数组进行排序,然后将其打印在表格中: -

 <?php
    $url = 'http://apis.is/flight?language=en&type=arrivals';
    $json = file_get_contents($url);
    $results = json_decode($json, TRUE);
    $results = $results['results'];

    usort($results, 'compare_time');
    function compare_time($a,$b){
       $first_time = strtotime(substr($a['realArrival'], -4));
       $second_time = strtotime(substr($b['realArrival'], -4));

       return ($first_time < $second_time)  ? 1: -1;
    }

    echo '<table class="highlight responsive-table purple darken-4">';
        echo "<tr>";
            echo '<th>Date</th>';
            echo '<th>Flight Number</th>';
            echo '<th>Airline</th>';
            echo '<th>From</th>';
            echo '<th>Schedule. Time</th>';
            echo '<th>Status</th>';
        echo "</tr>";
    foreach ($results as $item => $val) {
        echo "<tr>";
            echo '<td>'.$val['date'].'</td>';
            echo '<td>'.$val['flightNumber'].'</td>';
            echo '<td>'.$val['airline'].'</td>';
            echo '<td>'.$val['from'].'</td>';
            echo '<td>'.$val['plannedArrival'].'</td>';
            echo '<td>'.$val['realArrival'].'</td>';
        echo '</tr>';
    }
    echo '</table>';
?>