В PHP работа с многомерными массивами (например, сортировка списка товаров по цене) часто требует написания громоздких usort с замыканиями.
В ядре D7 есть статический класс \Bitrix\Main\Type\Collection, который содержит набор готовых инструментов для частых операций с массивами.
1. Сортировка по колонке (sortByColumn)
Самый популярный метод. Позволяет сортировать массив массивов по значению определенного ключа.
Задача: Отсортировать товары сначала по цене (по возрастанию), а затем по имени (по убыванию).
use Bitrix\Main\Type\Collection;
$products = [
['ID' => 1, 'NAME' => 'Phone B', 'PRICE' => 200],
['ID' => 2, 'NAME' => 'Phone A', 'PRICE' => 100],
['ID' => 3, 'NAME' => 'Phone C', 'PRICE' => 200],
];
// Сортируем: PRICE ASC, NAME DESC
Collection::sortByColumn(
$products,
[
'PRICE' => SORT_ASC,
'NAME' => SORT_DESC
]
);
// Результат: ID=2 (100), ID=3 (200, C), ID=1 (200, B)Важно: Метод принимает массив по ссылке и изменяет его.
2. Нормализация массива (normalizeArrayValuesByInt)
Часто нужно очистить массив ID, пришедший от пользователя: убрать дубли, пустые значения, привести к int и удалить нули.
$ids = ["10", " 20 ", "", "10", 0, null, "abc"];
$cleanIds = Collection::normalizeArrayValuesByInt($ids, true); // true - убрать дубли
// Результат: [10, 20]
// "abc" превратится в 0 и удалится, дубли уйдут, пробелы обрежутся3. Проверка на ассоциативность (isAssociative)
Полезно при разработке JSON API, чтобы понять, как кодировать массив (как объект {} или как список []).
$arr1 = ['a' => 1, 'b' => 2];
$arr2 = [1, 2, 3];
var_dump(Collection::isAssociative($arr1)); // true
var_dump(Collection::isAssociative($arr2)); // false4. Преобразование ключей (convertKeysToCamelCase / ToUpperCase)
Удобно при работе с REST API или старым кодом.
$data = ['user_id' => 5, 'first_name' => 'Ivan'];
// Конвертируем в CamelCase (например, для JS)
$camelData = Collection::convertKeysToCamelCase($data);
// ['userId' => 5, 'firstName' => 'Ivan']Вывод:
Класс \Bitrix\Main\Type\Collection — это «швейцарский нож» для работы с массивами. Использование его методов (sortByColumn в первую очередь) делает код чище и избавляет от написания «велосипедов» для стандартных операций сортировки и фильтрации данных.
Bitrix\Main\Type\Collection, сортировка массива битрикс, sortByColumn, multisort, нормализация массива, работа с массивами D7