Сортировка PHP-массивов

PHP располагает вариаций хранения данных. В их числе присутствуют массивы, представляющие собой находящиеся в определённом порядке своды информации и поддерживающие автоматическую сортировку.

Описание элемента

Массивы – аналог, но не полноценная замена знакомых каждому человеку таблиц. От них он отличается возможностью удобного чтения и программами, и людьми. В этом языке разделяют два видаarray, как их ещё называют в некоторых переведённых на русский самоучителях. Первый представлен парой «ключ  значение» (например, ‘fruit’ => ‘apple’), а второй – «значение» (‘apple’).

Есть и другие деления массивов, связанные с их структурами. Возможность подставить в качестве значения любой arrayпозволяет создавать организованные системы вложеностей. Ограничений в этом плане нет, однако в оптимизации кода решающую роль сыграет использование баз данных, поддерживающих больший набор функций и имеющих массу видов, среди которых наиболее яркими являются:

  • MySQL;
  • проект тех же создателей под названием MariaDB;
  • PostgreSQL.

Для вывода целого массива следует использовать функцию print_r();. Поскольку она не относится к базовым единицам языка, как, к примеру, print или echo, простановка скобок обязательна. Получить один элемент можно, обратившись к массиву, как к переменной, и заключив имя ключа в квадратные скобки и кавычки. Последние не требуются, если значение нужно получить по его номеру. Отсчёт идёт с нуля, а отрицательные числа дадут прочитать array с конца.

Доступные функции

Полный список команд, связанных с массивами, представлен несколькими десятками функциями, описанными в официальной документации. В их разнообразие легко запутаться, но в решении поставленного в теме статьи вопроса помогут 13 представленных ниже возможностей.

Следующие функции обеспечивают сортировку по ключам:

  • ksort(); – по возрастанию;
  • krsort();– по убыванию;
  • uksort();– по пользовательскому фильтру.

Остальные работают со значениями:

  • uasort();
  • usort();
  • sort();
  • shuffle();
  • rsort();
  • natsort();
  • natcasesort();
  • asort();
  • arsort();
  • array_multisort();.

Существенная разница между первым и вторым списками объясняется сохранением некоторыми функциями и разрушением другими связки «ключ значение», чувствительностью к регистру. Особое внимание – у shuffle();, вовсе выполняющего действия хаотично – его принцип работы основывается на генерации псевдослучайных чисел (истинно случайные значения сгенерировать средствами PHP невозможно).

Примеры использования

Перемешивание массива

С этой задачей справится упомянутая выше функция shuffle();, которая принимает только один аргумент – массив. Для компактности лучше записать его в переменную, а не выводить непосредственно с командой. Это улучшит удобность чтения кода, важную для внесения дальнейших изменений, если они когда-нибудь потребуются.

<?
$countries = array(
«RU» =>»Russia»,
«UA» =>»Ukraine»,
«KZ» =>»Kazakhstan»
); # Создание массива с парой «ключ-значение».
shuffle($countries); # Перемешивание массива на основе псевдослучайных чисел.
foreach ($countries as $result) {
echo $result.» «; # Вывод каждого значения, получившегося после перемешивания.
}
?>

Работает с любыми формами записи. Начиная со спецификации 7.1.0 используется иная формула перераспределения значений и/или ключей, которой обеспечивается повышенная скорость выполнения программы. Для выбора только ключей, проводимого случайным образом, следует воспользоваться array_rand();, появившемся в четвёртой версии языка.

Алфавитное сортирование

Для сортировки по ключам, стоящим в начале комбинаций, используется ksort();. К нему можно подставить флаги, обеспечивающие особый режим работы и не дающие PHP «засориться» массой функций, исполняющих похожие роли.

<?
$array = array(
«B» => 8,
«A» => 9,
«C» => 11111
); # Создание массива
ksort($array); # Сортировка массива по возрастанию ключа
print_r($array);# Вывод массива
?>

Те же действия, но с проверкой по значениям, выполняются sort();. Ему также свойственен простой синтаксис.

<?
$array = array(
«Bread»,
«Apple»,
«Cucumber»
); # Создание массива
sort($array); # Сортировка массива по возрастанию значения
print_r($array); # Вывод массива
?>

Сортировать по алфавитному убыванию помогут krsort(); и rsort(); соответственно. В случае с ними никаких сложностей тоже не возникнет – достаточно подставить массив и, по желанию, модификатор:

  • SORT_REGULAR– стандартное сравнение, используется по умолчанию;
  • SORT_NUMERIC – перевод ключей или значений в числа перед выполнением сортировки;
  • SORT_STRING – сортирование значений либо ключей, как строк;
  • SORT_LOCALE_STRING – учитывание норм языкового стандарта, заданного с помощью setlocale();
  • SORT_NATURAL– сортировка по тому же принципу, что у natsort();
  • SORT_FLAG_CASE – работа вне зависимости от регистра.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *