Блог Горошко Андрея 1C-Битрикс Манипуляции с массивами в D7: Класс \Bitrix\Main\Type\Collection

Манипуляции с массивами в D7: Класс \Bitrix\Main\Type\Collection

В 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)); // false

4. Преобразование ключей (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

Похожая задача в бизнесе?

Помогу автоматизировать процессы и внедрить ИИ

Меня зовут Андрей Горошко. Я Full-stack разработчик и эксперт по 1С-Битрикс. Настраиваю CRM Битрикс24, разрабатываю защищенные API и создаю умных ИИ-агентов для автоматизации рутины.

Добавить комментарий

Related Post

Оптимизация верстки сайта на Битрикс под Google PageSpeed 90+Оптимизация верстки сайта на Битрикс под Google PageSpeed 90+

Качественная frontend-разработка и профессиональная натяжка макетов на 1С-Битрикс являются фундаментальным фактором конверсии сайта и его позиций в поисковых системах. Услуга «Оптимизация верстки сайта на Битрикс под Google PageSpeed 90+» гарантирует

Верстка страницы «Спасибо за заказ» с трекингом конверсийВерстка страницы «Спасибо за заказ» с трекингом конверсий

Качественная frontend-разработка и профессиональная натяжка макетов на 1С-Битрикс являются фундаментальным фактором конверсии сайта и его позиций в поисковых системах. Услуга «Верстка страницы «Спасибо за заказ» с трекингом конверсий» гарантирует номера

Условия гарантийных обязательств и SLA в договоре на техподдержку интернет-магазинаУсловия гарантийных обязательств и SLA в договоре на техподдержку интернет-магазина

Прозрачный расчет бюджета, честные сметы и понимание совокупной стоимости владения (TCO) — залог успешного сотрудничества и окупаемости инвестиций в веб-разработку на 1С-Битрикс. В статье «Условия гарантийных обязательств и SLA в