Одна из типичных задач, с которыми сталкивается разработчик на PHP, — это сортировка массива. В языке программирования PHP можно выполнять сортировку (sorting) массива и по значению, и по ключу, можно делать естественную сортировку, сортировку многомерных и ассоциативных массивов (arrays) и т. д. Для всего этого предусмотрено множество функций. Кратко рассмотрим некоторые из них.
Сортировка позволяет выполнить упорядочение (ordering) данных в какой-нибудь структуре данных, в нашем случае — в массиве. Получение нужного порядка сортировки может быть необходимо для решения задач, поставленных перед разработчиком.
Функции ksort и krsort
Вышеописанные функции могут применяться в PHP для выполнения сортировки массива по ключу. Работает это следующим образом:
Порядок сортировки (ordering) будет следующим:
(
[1] => Москва
[3] => Санкт-Петербург
[5] => Волгоград
)
(
[5] => Волгоград
[3] => Санкт-Петербург
[1] => Москва
)
Обратите внимание, что элементы массива были отсортированы не по алфавиту, а по ключу, в нашем случае — это нужный порядок (order) цифр. Таким образом данные были упорядочены (ordered, sorted) с учетом ключей.
Функции sort и rsort
Функция sort
(как и resort
) сортирует (sorts) заданный массив по значению, не сохраняя ключи. Рассмотрим пример:
$array = array(
3 => 'Санкт-Петербург',
1 => 'Москва',
5 => 'Волгоград'
);
// Выполняем сортировку PHP массива по возрастанию:
sort($array);
print_r($array);
// Выполняем сортировку PHP массива по убыванию:
rsort($array);
print_r($array);
А теперь любопытно взглянуть на результат сортировки массива в PHP по значению. Код возвращает следующий результат:
(
[0] => Волгоград
[1] => Москва
[2] => Санкт-Петербург
)
(
[0] => Санкт-Петербург
[1] => Москва
[2] => Волгоград
)
Мы видим, что значения были упорядочены в алфавитном порядке (в прямом, а потом в обратном).
Функции asort и arsort
Если надо, чтобы функция при сортировке (ordering) все-таки сохраняла ключи, пригодится function asort
либо arsort
.
$array = array(
3 => 'Санкт-Петербург',
1 => 'Москва',
5 => 'Волгоград'
);
// возрастание:
asort($array);
print_r($array);
// убывание:
arsort($array);
print_r($array);
Итог следующий:
(
[5] => Волгоград
[1] => Москва
[3] => Санкт-Петербург
)
(
[3] => Санкт-Петербург
[1] => Москва
[5] => Волгоград
)
Мы опять упорядочили данные по значению в прямом и обратном алфавитном порядке. Механизм работы похож на sort, но есть разница, которая заключается в том, что была сохранена связка «ключ-значение». Что это может значить на практике? К примеру, функция подойдет при упорядочении тех же ассоциативных массивов в PHP, то есть в ситуациях, когда связь в структуре важна и логична.
Функция PHP usort
С помощью usort
можно отсортировать многомерный массив по необходимому полю. То есть у нас есть возможность выполнить sorting, не сохраняя связку «ключ-значение», но с учетом пользовательской функцией, имя которой можно передать при вызове usort
в качестве второго параметра: usort($array, ‘function’)
.
Саму функцию описывают отдельно. Как может выглядеть код:
function mySort($a, $b)
{
if ($a['id'] == $b['id']) return 0;
return $a['id'] > $b['id'] ? 1 : -1;
}
Далее надо будет сделать вызов функции usort($array, ‘mySort’)
в нужном месте кода, а в качестве 1-го параметра указать имя переменной массива.
Shuffle
При необходимости можно выполнить и смешивание. Для этого используется функция shuffle
. В результате ее работы все значения смешиваются в случайном порядке, причем ключи не сохраняются.
Давайте вернемся к нашим городам и выполним смешивание два раза. Почему два? Это позволит убедиться в определенной случайности процесса перемешивания. В нашем случае дважды будет получен разный результат:
Источники:
- https://snipp.ru/php/sort-array;
- http://cccp-blog.com/koding/sortirovka-massiva-php-razlichnymi-sposobami.
Хотите знать намного больше? Добро пожаловать на курс!