Здравствуйте, а не подскажите? после uasort почему-то json_encode делает с массива объект?
$regions = [
[
"value" => "03bec6fe-db50-11e7-80c6-00155dfbfb00",
"text" => "О"
],
[
"value" => "d552f074-dbfb-11e7-80c6-00155dfbfb00",
"text" => "А"
],
];
print_r(json_encode($regions));
// [{"value":"03bec6fe-db50-11e7-80c6-00155dfbfb00","text":"\u041e"},{"value":"d552f074-dbfb-11e7-80c6-00155dfbfb00","text":"\u0410"}]
uasort($regions, function ($a, $b) { return strnatcmp($a['text'], $b['text']); });
print_r(json_encode($regions));
// {"1":{"value":"d552f074-dbfb-11e7-80c6-00155dfbfb00","text":"\u0410"},"0":{"value":"03bec6fe-db50-11e7-80c6-00155dfbfb00","text":"\u041e"}}