Вам нужен второй массив для хранения данных. И дубликат вашего массива мест.
for each $place in $places_array do
store $place in $store_array
for each $place2 in $places2_array do
if $place2 == $place
continue
else
if compare_radius() == true
store $place2 in $store_array
end_if
end_else
end_for
erase each new data in store from $places2_array (Only if you do not want to replicate data)
end_for
Варс
- $ store_array: новый массив со всеми местами, сгруппированными по близости. Его структура может выглядеть как [0] -> [place_1] [place_2], [1] -> [place_1] и т. Д. ...
- $ place_array: ваш массив данных.
- $ place2_array: дубликат из $ place_array.
Я знаю, что это не эффективный алгоритм, но он выполняет свою работу. Если у вас много данных, возможно, лучше использовать другой алгоритм.