Acho que o que você está tentando alcançar poderia ser feito melhor usando a fórmula de Haversine em seu SQL. O Google tem um tutorial sobre como obter os locais mais próximos em um banco de dados MySQL mas a ideia geral é esse SQL:
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;
Então, todo o trabalho que você precisa fazer é feito no banco de dados, para que você não precise colocar todos os negócios em seu script PHP antes mesmo de verificar a distância.