Tôi nghĩ những gì bạn đang cố gắng đạt được có thể được thực hiện tốt hơn bằng cách sử dụng công thức Haversine trong SQL của bạn. Google có một hướng dẫn về cách lấy các vị trí gần nhất trong cơ sở dữ liệu MySQL nhưng ý tưởng chung là SQL này:
SELECT id, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) )
* cos( radians( lng ) - radians(-122) ) + sin( radians(37) )
* sin( radians( lat ) ) ) ) AS distance
FROM markers
HAVING distance < 25
ORDER BY distance LIMIT 0 , 20;
Sau đó, tất cả công việc bạn cần làm được thực hiện trên cơ sở dữ liệu, vì vậy bạn không cần phải kéo tất cả các doanh nghiệp vào tập lệnh PHP của mình trước khi bạn kiểm tra khoảng cách.