#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"
}