$latitudeFrom = 123;
$longitudeFrom = 123;
usort($this->items, function ($item1, $item2) use ($latitudeFrom, $longitudeFrom) {
$distance1 = acos(rad2deg(sin(deg2rad($latitudeFrom)) * sin(deg2rad($item1->latitude)) + cos(deg2rad($latitudeFrom)) * cos(deg2rad($item1->latitude)) * cos(deg2rad($longitudeFrom - $item1->longitude)))) * 60 * 1.1515 * 1.609344;
$distance2 = acos(rad2deg(sin(deg2rad($latitudeFrom)) * sin(deg2rad($item2->latitude)) + cos(deg2rad($latitudeFrom)) * cos(deg2rad($item2->latitude)) * cos(deg2rad($longitudeFrom - $item2->longitude)))) * 60 * 1.1515 * 1.609344;
$result = 0;
if ($distance1 < $distance2) {
$result = -1;
} else if ($distance1 > $distance2) {
$result = 1;
}
return $result;
});
$this->items
теперь отсортировано.Чтобы изменить порядок, просто переключите <
и >
.