Сортируем массив по ключам
как отсортировать массив по ключам с помощью PHP
Если коротко, отсортировать массив по ключам в PHP можно с помощью нативной функции ksort(), которая доступна в различных версиях PHP (4, 5, 7). Функция сортирует массив по ключам, сохраняя отношения между ключами и значениями.
ksort()
принимает два параметра:
- обязательный параметр - собственно массив, который должен быть отсортирован,
- необязательный параметр - флаг сортировки (значение по умолчанию: SORT_REGULAR - обычное сравнение элементов).
На примере ассоциативного массива `$arFoods мы рассмотрим, как работает данная функция.
Итак, у нас есть исходный ассоциативный массив:
$arFoods = ["Bacon" => 9, "Tomatoes" => 6, "Milk" => 1, "Pasta" => 2, "Eggs" => 20, "Potato" => 17, "Broccoli" => 1, "Biscuits" => 20, "Chocolate" => 2];
var_dump($arFoods);
Вывод неотсортированного массива с помощью var_dump()
выглядит так:
array(9) { ["Bacon"]=> int(9) ["Tomatoes"]=> int(6) ["Milk"]=> int(1) ["Pasta"]=> int(2) ["Eggs"]=> int(20) ["Potato"]=> int(17) ["Broccoli"]=> int(1) ["Biscuits"]=> int(20) ["Chocolate"]=> int(2) }
Применим сортировку по ключам:
ksort($arFoods);
var_dump($arFoods);
Вывод отсортированного массива будет таким:
["Bacon"]=> int(9) ["Biscuits"]=> int(20) ["Broccoli"]=> int(1) ["Chocolate"]=> int(2) ["Eggs"]=> int(20) ["Milk"]=> int(1) ["Pasta"]=> int(2) ["Potato"]=> int(17) ["Tomatoes"]=> int(6) }Copy
Как было отмечено выше, функция ksort()
принимает два аргумента, одним из которых является необязательный флаг сортировки. В нашем примере второй аргумент опущен.
Сам список возможных флагом сортировки приведен ниже:
- SORT_REGULAR - обычное сравнение элементов (флаг сортировки по умолчанию),
- SORT_NUMERIC - числовое сравнение элементов,
- SORT_STRING - строковое сравнение элементов,
- SORT_LOCALE_STRING - сравнивает элементы как строки с учетом текущей локали,
- SORT_NATURAL - сравнение элементов как строк, используя естественное упорядочение,
- SORT_FLAG_CASE - может быть объединен (побитовое ИЛИ) с SORT_STRING или SORT_NATURAL для сортировки строк без учета регистра.
Спасибо за внимание.