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

Сортировка позволяет выполнить упорядочение (ordering) данных в какой-нибудь структуре данных, в нашем случае — в массиве. Получение нужного порядка сортировки может быть необходимо для решения задач, поставленных перед разработчиком.

Функции ksort и krsort 

Вышеописанные функции могут применяться в PHP для выполнения сортировки массива по ключу. Работает это следующим образом:

Сортировка массива на 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. В результате ее работы все значения смешиваются в случайном порядке, причем ключи не сохраняются.

Давайте вернемся к нашим городам и выполним смешивание два раза. Почему два? Это позволит убедиться в определенной случайности процесса перемешивания. В нашем случае дважды будет получен разный результат:

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

Источники:

  • https://snipp.ru/php/sort-array;
  • http://cccp-blog.com/koding/sortirovka-massiva-php-razlichnymi-sposobami.

Хотите знать намного больше? Добро пожаловать на курс!

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