Расширенная сортировка массива ассоциативных массивов

Метод Bitrix\Main\Type\Collection::sortByColumn представляет собой статический метод, который позволяет сортировать массивы по значениям одной или нескольких колонок. Это особенно полезно, когда вы работаете с массивом/ассоциативным массивов ассоциативных массивов (замудренно как 😬) и хотите упорядочить их по определенным критериям.

Описание метода

Прототип метода выглядит следующим образом:

public static function sortByColumn(
    array &$array, // массив, который нужно отсортировать
    $column, // колонка или массив колонок, по которым будет производиться сортировка
    array $callbacks = '', // необязательный параметр, массив обратных вызовов для пользовательских функций сортировки.
    $defaultValueIfNotSetValue = null, // необязательный параметр, значение по умолчанию, если в колонке нет значения.
    $preserveKeys = false // необязательный параметр, указывающий на необходимость сохранения ключей массива.
): void

1. Простая сортировка по одной колонке


use Bitrix\Main\Type\Collection;

$products = [
    ['name' => 'Телефон', 'price' => 20000],
    ['name' => 'Планшет', 'price' => 30000],
    ['name' => 'Ноутбук', 'price' => 40000]
];

Collection::sortByColumn($products, 'price');
В этом примере массив $products будет отсортирован по цене в порядке возрастания.

2. Сортировка по нескольким колонкам


Collection::sortByColumn($products, ['price' => SORT_DESC, 'name' => SORT_ASC]);
Здесь массив $products будет сначала отсортирован по цене по убыванию, а затем — по имени по возрастанию.

3. Использование пользовательских функций сортировки


Collection::sortByColumn($products, ['name' => SORT_ASC], ['name' => 'mb_strlen']);
В данном случае сортировка производится по длине строки имени продукта в порядке возрастания.

4. Сохранение ключей массива


Collection::sortByColumn($products, 'price', [], null, true);
При установке параметра $preserveKeys в true, ключи исходного массива $products будут сохранены после сортировки.

© 2026 MB

Desing by mb4design