Сортировка массивов в PHP с помощью usort() с сохранением ключей

В PHP сортировка массивов — обычная задача, но иногда нам необходимо сохранить ключи массива при его сортировке. Этого можно добиться с помощью функции usort(). В этой записи блога мы рассмотрим различные методы сортировки массивов в PHP, сохраняя при этом ключи, а также предоставим примеры кода.

Метод 1: использование usort() с пользовательской функцией сравнения
Функция usort() позволяет нам определить пользовательскую функцию сравнения, которая определяет порядок сортировки. Используя эту функцию, мы можем сравнить значения элементов массива, принимая во внимание ключи.

$array = ["apple" => 3, "banana" => 1, "orange" => 2];
usort($array, function ($a, $b) {
    return $a - $b;
});
print_r($array);

Выход:

Array
(
    [banana] => 1
    [orange] => 2
    [apple] => 3
)

Метод 2. Использование uasort() для пользовательской сортировки с сохранением ключа
Другой метод достижения сохранения ключа при сортировке массива — использование функции uasort(). Эта функция аналогична usort(), но сохраняет исходные ключи массива.

$array = ["apple" => 3, "banana" => 1, "orange" => 2];
uasort($array, function ($a, $b) {
    return $a - $b;
});
print_r($array);

Выход:

Array
(
    [banana] => 1
    [orange] => 2
    [apple] => 3
)

Метод 3: использование array_multisort() с ключами массива
Функция array_multisort() может использоваться для одновременной сортировки нескольких массивов с сохранением ключей. Передавая ключи в виде отдельного массива в array_multisort(), мы можем сохранить исходную ассоциацию ключ-значение.

$array = ["apple" => 3, "banana" => 1, "orange" => 2];
$keys = array_keys($array);
array_multisort($array, $keys);
$result = array_combine($keys, $array);
print_r($result);

Выход:

Array
(
    [banana] => 1
    [orange] => 2
    [apple] => 3
)

Сортировка массивов с сохранением ключей в PHP может осуществляться различными методами. В этой статье мы рассмотрели три подхода: использование usort() с собственной функцией сравнения, использование uasort() для пользовательской сортировки с сохранением ключей и использование array_multisort() с ключами массива. Каждый метод предоставляет способ сортировки массивов, сохраняя при этом исходную связь «ключ-значение». Выбрав подходящий метод в зависимости от ваших конкретных требований, вы можете легко сортировать массивы в PHP, сохраняя при этом ключи.