В 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, сохраняя при этом ключи.