【问题标题】:How to sort an array of coordinates by my location PHP如何按我的位置 PHP 对坐标数组进行排序
【发布时间】:2016-12-12 21:52:43
【问题描述】:

我有我所在位置的坐标,我想将我的数据库坐标从离我的​​位置最近到远的位置排序。 这是我获取和保存坐标的代码:

$myXCoor = 37.9730328;
$myYCoor = 23.7533623;
$xcoor = array();
$ycoor = array();
    $result = mysqli_query($con, "SELECT * FROM `base`.`table` ;");

      while($row = mysqli_fetch_array($result, MYSQLI_BOTH))
         {

               $xcoor[] = $row['x'];
               $ycoor[] = $row['y'];

         }

我真的不知道该怎么做,如果有人想了解更多细节,请发表评论。

提前致谢

【问题讨论】:

标签: php sorting location coordinates


【解决方案1】:

您可以在 SQL 中通过添加顺序来完成:

$myXCoor = 37.9730328;
$myYCoor = 23.7533623;
$xcoor = array();
$ycoor = array();
$order = "order by pow((t.x - $myXCoor),2) + pow((t.y - $myYCoor),2);";
$result = mysqli_query($con,"SELECT * FROM `base`.`table` t $order");

或者你可以使用 usort:

$result = mysqli_query($con, "SELECT * FROM `base`.`table` ;");
$result = mysqli_fetch_all($result, MYSQL_BOTH);
usort($result, function($a,$b) use ($myXCoor,$myYCoor){
   return pow($a['x'] - $myXCoor, 2) + pow($a['y'] - $myYCoor, 2)
        > pow($b['x'] - $myXCoor, 2) + pow($b['y'] - $myYCoor, 2) ? 1 : -1;
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-17
    • 1970-01-01
    • 1970-01-01
    • 2021-04-23
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 2021-11-04
    相关资源
    最近更新 更多