@navodchik131

Как отсортировать ассоциативный массив?

Добрый день. столкнулся с такой проблемой. Есть простой ассоциативный массив
array(7) {
  ['1']=>
  int(95)
  ['2']=>
  int(83)
  ['3']=>
  int(64)
  ['4']=>
  int(71)
  ['5']=>
  int(96)
  ['6']=>
  int(95)
  ['7']=>
  int(7)
}


Нужно отсортировать его по значению, при этом сохраняя ключ.
Вроде все просто есть функции asort() и arsort(). Но есть очень неприятный момент
Замечание:

Если оба сравниваемых значения эквивалентны, то порядок их в отсортированном массиве не определен.


А мне надо железно чтоб элемент который был раньше, был первым допустим (если сортируем по убыванию), первым относительно элемента с таким же значением.

т.е при сортировке по убыванию должно получится так
array(7) {
  ['5']=>
  int(96)
  ['1']=>
  int(95)
  ['6']=>
  int(95)
  ['2']=>
  int(83)
  ['4']=>
  int(71)
  ['3']=>
  int(64)
  ['7']=>
  int(7)
}


а по возрастанию

array(7) {
  ['7']=>
  int(7)
  ['3']=>
  int(64)
  ['4']=>
  int(71)
  ['2']=>
  int(83)
  ['1']=>
  int(95)
  ['6']=>
  int(95)
  ['5']=>
  int(96)
}
  • Вопрос задан
  • 124 просмотра
Решения вопроса 1
@usheninmike
1. Пройдите по массиву и замените значение каждого элемента на подмассив, содержащий
  • существующее значение элемента
  • порядковый номер элемента



2. Отсортируйте полученный массив функцией uasort с учётом изначальных значений и добавленных порядковых номеров.

3. Ещё раз пройдите по массиву и обратно замените подмассивы на изначальные значения, которые в них содержатся.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
anton_reut
@anton_reut
Начинающий веб-разработчик
Выведи из базы сразу сортированный массив указав в sql запросе Order By ... Asc или Desc
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Spice IT Recruitment Москва
До 230 000 ₽
ImageSpark Санкт-Петербург
от 60 000 ₽
FrozenEon Киев
от 1 500 до 3 000 $