Du hast eine Baumstruktur vorliegen, kein mehrdimensionales Array im eigentlichen Sinne. Die einzige nervenschonende Vorgehensweise ist usort() und Konsorten. array_multi_sort() ist weniger sinnvoll.
Ah ok. Vielen Dank für den Hinweis. Hatte es jetzt schon mit array_multi_sort() probiert, aber kein Ergebnis hinbekommen. Problem bei usort() war für mich, wie ich denn den Schlüssel übergebe, nach welchem sortiert werden soll.
Der sieht in meinem Fall so aus "['location']['distance']".