php 排序多组经纬度
时间: 2023-03-05 15:02:09 浏览: 68
在 PHP 中,可以使用 usort 函数对数组进行自定义排序。下面是一个根据经纬度计算距离并进行排序的示例:
```
function sortByDistance($a, $b)
{
$lat1 = $a['latitude'];
$lon1 = $a['longitude'];
$lat2 = $b['latitude'];
$lon2 = $b['longitude'];
$theta = $lon1 - $lon2;
$dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) + cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta));
$dist = acos($dist);
$dist = rad2deg($dist);
$miles = $dist * 60 * 1.1515;
return ($miles <= $m) ? -1 : 1;
}
usort($locations, 'sortByDistance');
```
上面的代码中,$locations 是包含经纬度的数组,每个元素都应该是一个具有 "latitude" 和 "longitude" 键的关联数组。'sortByDistance' 是自定义排序函数,在这个函数中使用两个点的经纬度计算两点间的距离,并比较距离的大小来决定元素的顺序。
如果需要按距离从近到远排序,将 $miles <= $m 的返回值改为 $miles >= $m 即可