Функции uasort и json_encode c массива делаю объект?

Здравствуйте, а не подскажите? после 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"}}
  • Вопрос задан
  • 67 просмотров
Решения вопроса 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Вы используете uasort, который сортирует ассоциативный массив, соответственно меняя положение и данных и ключей.
Используйте вместо этого usort.
Ответ написан
Комментировать
alexey-m-ukolov
@alexey-m-ukolov Куратор тега PHP
Альтернативное решение (приведено для полноты картины, но правильнее использовать подходящую функцию сортировки):
json_encode(array_values($regions))
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы