Glossary overview

sortBy()

sortBy() — это удобная кастомная функция, которую часто создают сами разработчики (или берут из Laravel/Collection API), чтобы сортировать массивы по значению определённого ключа в массиве элементов.

PHP не включает sortBy() “из коробки”, но ты можешь легко реализовать такую функцию сам!

Цель sortBy()

Сортировать массив ассоциативных массивов (или объектов) по одному из внутренних ключей.

Пример данных:

$users = [
    ['id' => 1, 'name' => 'Alice', 'age' => 32],
    ['id' => 2, 'name' => 'Bob', 'age' => 25],
    ['id' => 3, 'name' => 'Charlie', 'age' => 40],
];

Пример своей sortBy()-функции:

function sortBy(array $array, string $key, string $direction = 'asc'): array {
    usort($array, function ($a, $b) use ($key, $direction) {
        if (!isset($a[$key], $b[$key])) return 0;

        if ($a[$key] == $b[$key]) return 0;

        if ($direction === 'asc') {
            return ($a[$key] < $b[$key]) ? -1 : 1;
        } else {
            return ($a[$key] > $b[$key]) ? -1 : 1;
        }
    });

    return $array;
}

Использование:

$sorted = sortBy($users, 'age', 'asc');

print_r($sorted);

// Вывод
[
    ['id' => 2, 'name' => 'Bob', 'age' => 25],
    ['id' => 1, 'name' => 'Alice', 'age' => 32],
    ['id' => 3, 'name' => 'Charlie', 'age' => 40],
]