Menu
Coddy logo textTech

Сортировка ассоциативных массивов по ключу

Часть раздела Логика и управление потоком путешествия по 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, что делает их эффективными для организации данных, где порядок ключей важнее порядка значений.

challenge icon

Задание

Легко

Вы получите один входной параметр: ассоциативный массив названий отделов и выделенных им бюджетов в формате 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);
?>
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и управление потоком

Потренируйтесь самостоятельно: Онлайн-компилятор PHP