【问题标题】: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;
});