Bạn có thể không cần làm điều này trong mã, bạn có thể làm tất cả trong DB. nếu bạn sử dụng chỉ mục không gian . Tài liệu MySQL cho chỉ mục không gian
CHỈNH SỬA để phản ánh chỉnh sửa của bạn:
Tôi nghĩ bạn muốn một cái gì đó như thế này:
SELECT *, ((ACOS(SIN($lat * PI() / 180) * SIN(lat * PI() / 180) + COS($lat * PI() / 180) * COS(lat * PI() / 180) * COS(($lon - lon) * PI() / 180)) * 180 / PI()) * 60 * 1.1515) AS distance FROM locations HAVING distance<='10' ORDER BY distance ASC
VIA:http://www.zcentric.com/blog/2007/03 /calculate_distance_in_mysql_wi.html :