Сортировка ассоциативных массивов по ключу
Часть раздела Логика и управление потоком путешествия по PHP на Coddy — урок 23 из 68.
Хотя сортировка по значениям полезна, иногда вам нужно упорядочить ассоциативные массивы по их ключам. PHP предоставляет функцию ksort() для сортировки по ключам в порядке возрастания и krsort() для сортировки по ключам в порядке убывания, при этом обе функции сохраняют важные связи между ключами и значениями.
Вот как ksort() сортирует массив по алфавиту по его ключам:
<?php
$settings = [
"theme" => "dark",
"language" => "english",
"notifications" => "enabled",
"auto_save" => "on"
];
ksort($settings);
print_r($settings);
// Вывод: Array ( [auto_save] => on [language] => english [notifications] => enabled [theme] => dark )
?>Обратите внимание, что теперь ключи расположены в алфавитном порядке от A до Z, при этом каждое имя настройки остается правильно связанным со своим значением. Это особенно полезно, когда вы хотите отобразить параметры конфигурации или пункты меню предсказуемым и организованным образом.
Для обратного алфавитного порядка krsort() работает аналогично, но сортирует ключи от Z до A. Обе функции изменяют исходный массив напрямую, как и другие функции сортировки PHP, что делает их эффективными для организации данных, где порядок ключей важнее порядка значений.
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Задание
ЛегкоВы получите один входной параметр: ассоциативный массив названий отделов и выделенных им бюджетов в формате JSON. Прочитайте входные данные, преобразуйте строку JSON в массив, используйте функцию ksort() для сортировки отделов по алфавиту по их ключам в порядке возрастания и выведите отсортированный массив с помощью print_r().
Формат входных данных: Одна строка, содержащая объект JSON, где ключами являются названия отделов, а значениями — суммы бюджета (пример: {"Marketing":75000,"IT":120000,"HR":65000,"Finance":95000})
Ожидаемый результат: Отсортированный ассоциативный массив в алфавитном порядке по возрастанию названий отделов (ключей), отображаемый с помощью print_r()
Шпаргалка
PHP предоставляет функции ksort() и krsort() для сортировки ассоциативных массивов по их ключам с сохранением связей между ключами и значениями.
ksort() сортирует ключи в алфавитном порядке по возрастанию (от A до Z):
ksort($array);krsort() сортирует ключи в алфавитном порядке по убыванию (от Z до A):
krsort($array);Обе функции изменяют исходный массив напрямую:
<?php
$settings = [
"theme" => "dark",
"language" => "english",
"notifications" => "enabled",
"auto_save" => "on"
];
ksort($settings);
print_r($settings);
// Вывод: Array ( [auto_save] => on [language] => english [notifications] => enabled [theme] => dark )
?>Попробуйте сами
<?php
// Чтение входных данных
$input = fgets(STDIN);
// Преобразование JSON в массив
$departments = (array)json_decode($input, true);
// TODO: Напишите ниже свой код для сортировки массива по ключам
// Вывод результата
print_r($departments);
?>В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и управление потоком
1Продвинутые функции
Анонимные функцииЗамыкания и 'use'Стрелочные функцииCallback-функцииИспользование 'call_user_func'Функции переменныхПередача по ссылкеРекурсивные функцииИтоги: ассорти из функций4Многомерные массивы
Создание 2D-массиваДоступ к элементам 2D-массиваИзменение элементов 2D-массиваИтерация с вложенными цикламиДвумерные ассоциативные массивыИтоги: Упражнение «Простая сетка»2Продвинутая работа с массивами
Добавление с помощью 'array_push'Удаление с помощью 'array_pop'Добавление с помощью 'array_unshift'Удаление с помощью 'array_shift'Слияние индексных массивовСлияние ассоциативных массивовИзвлечение с помощью 'array_slice'Поиск значений с 'in_array'Поиск ключей с 'array_search'Итоги: Упражнение «Плейлист»3Сортировка массивов
Сортировка индексных массивов по возрастаниюСортировка индексных массивов по убываниюСортировка ассоциативных массивов по значениюСортировка ассоциативных массивов по ключуСортировка в естественном порядкеПользовательская сортировка с помощью 'usort'Итоги: Сортировка таблицы лидеров