Сортировка ассоциативных массивов по ключу
Часть раздела Логика и управление потоком путешествия по 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
// Чтение входных данных
$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'Итоги: Сортировка таблицы лидеровПотренируйтесь самостоятельно: Онлайн-компилятор PHP