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

quiz iconПроверьте себя

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

quiz iconПроверьте себя

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

quiz iconПроверьте себя

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

challenge icon

Задание

Легко

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

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

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