сортировка массива php по индексу

#php #arrays #sorting

#php #массивы #сортировка

Вопрос:

У меня возникли некоторые трудности с сортировкой простого массива, который выглядит следующим образом:

 array(4) {
  [32]=>
  string(1) "1"
  [34]=>
  string(1) "2"
  [35]=>
  string(1) "1"
  [33]=>
  string(1) "0"
}
 

Я просто хочу отсортировать его по индексу, чтобы он выглядел так:

 array(4) {
  [32]=>
  string(1) "1"
  [33]=>
  string(1) "0"
  [34]=>
  string(1) "2"
  [35]=>
  string(1) "1"
}
 

Я пытался использовать sort($votes); , но, похоже, это удаляет индекс, и после этого мой массив выглядит так:

 array(4) {
  [0]=>
  string(1) "0"
  [1]=>
  string(1) "1"
  [2]=>
  string(1) "1"
  [3]=>
  string(1) "2"
}
 

Итак, каков был бы наилучший способ сортировки этого массива, чтобы индекс оставался тем же, но отсортированным?

Ответ №1:

Вы хотите использовать ksort() , который сортирует массив по его ключам.

ksort

Сортирует массив по ключу, сохраняя соответствие ключей данным. Это полезно в основном для ассоциативных массивов.

Комментарии:

1. Боже, есть так много способов сортировать так много разных типов массивов. Потребовалась вечность, чтобы найти это, так что спасибо!

Ответ №2:

Краткий обзор функций сортировки массивов в PHP см. в разделе Сортировка массивов в руководстве по PHP.

Ответ №3:

Используйте ksort($votes);

И результат будет

 array(4) {
  [32]=>
  string(1) "1"
  [33]=>
  string(1) "0"
  [34]=>
  string(1) "2"
  [35]=>
  string(1) "1"
}
 

Для получения дополнительной информации проверьте это

Ответ №4:

https://www.php.net/manual/en/function.asort.php

похоже, вы ищете.

это позволит отсортировать массив и сохранить существующие индексы

 array(4) {
  [33]=>
  string(1) "0"
  [32]=>
  string(1) "1"
  [35]=>
  string(1) "1"
  [34]=>
  string(1) "2"
}