按照距离对内容进行排序

时间:2015-05-21 13:56:24

标签: php laravel foreach

我正在使用Geotools软件包开发一个应用程序,我有一个问题:

foreach

此代码返回foreach中各点之间的距离,但我需要将{{1}}与距离进行排序,我不知道如何才能做到这一点。

有人可以帮助我吗?

2 个答案:

答案 0 :(得分:0)

在PHP中使用sort()函数。 要使用的语法:sort(array,sortingtype);

使用以下链接获取更多信息:http://www.w3schools.com/php/func_array_sort.asp

答案 1 :(得分:0)

在foreach循环中,将它全部放在一个数组中,然后遍历数组。 您可以使用距离作为键,将HTML输出用作值。 您可以使用数组上的ksort函数按键对其进行排序。

public function prodcercanos()
    {
        $cercanos = User::with('municipio')->with('productos')->get();
        $coordA   = Geotools::coordinate([44.4578589, 2.2951061999999998]); 
        $output = [];
        foreach ($cercanos as $p) {
            $coordB   = Geotools::coordinate([$p->municipio->latitud,$p->municipio->longitud]);
            $distance = Geotools::distance()->setFrom($coordA)->setTo($coordB);
            $dis = $distance->in('km')->haversine();
            $output[$dis] = $p->id . "<p>$dis</p>";
        }       
        ksort($output);
        foreach ($output as $line) {
            echo $line;
        }
    }