PHP. Сортировка многомерного массива по 2 значениям

Данный материал предоставлен сайтом PacificSky.Ru исключительно в ознакомительных целях. Администрация не несет ответственности за его содержимое.

В данной статья будет представлен код с сортировкой многомерного массива по содержимому 2 колонок.
Это может пригодиться в тот момент, когда нужно отсортировать массив по одной колонке. И только потом по другой.
К примеру нужно отсортировать список сотрудников по имени и фамилии, если имя совпадает. Имена должны быть отсортированы в порядке от А до Я.
И только после этого должны будут отсортированы их фамилии тоже в порядке от А до Я.

Список сотрудников:
        
$employees[0] = ['firstName' => 'Дмитрий', 'lastName' => 'Агафонов'];
$employees[1] = ['firstName' => 'Иван', 'lastName' => 'Иванов'];
$employees[2] = ['firstName' => 'Иван', 'lastName' => 'Акаров'];
$employees[3] = ['firstName' => 'Константин', 'lastName' => 'Алферов'];
$employees[4] = ['firstName' => 'Александр', 'lastName' => 'Ильин'];
$employees[5] = ['firstName' => 'Иван', 'lastName' => 'Алабян'];
$employees[7] = ['firstName' => 'Дмитрий', 'lastName' => 'Абрамов'];

Для сортировки воспользуемся функцией usort.
Передадим в нее массив с сотрудниками $employees и анонимную функцию.
Внутри анонимной функции произведем сравнение имени и фамилии с помощью оператора spaceship (Космический корабль).
Оператор spaceship позволяет прямолинейно сравнивать составные значения по нескольким осям.
Массив $employees будет отсортирован по имени и затем по фамилии, если имя совпадает.
usort($employees, function (array $a, array $b) {
        return [$a['firstName'], $a['lastName']] <=> [$b['firstName'], $b['lastName']];
});

Оператор spaceship появился в php начиная с 7 версии.
Если у вас php ниже 7 версии, то необходимо воспользоваться обычными операторами сравнения значений.

Результат сортировки массива:


Весь код из примера:
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.