Проблему сравнения дат решил, если вдруг кто столкнется, даже две даты в одинаковом формате лучше сравнивать через strtotime(). Переписал перебор и все заработало как нужно.
Но тут же получил новую проблему, переменные $distance и $topl перебираются несколько раз, то есть их значение больше чем должно быть.
Как все таки правильно перебрать два массива?