Блог Горошко Андрея 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

Мой рейтинг:

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

Related Post

Создание кастомной страницы в административной панели БитриксСоздание кастомной страницы в административной панели Битрикс

Средний рейтинг 5 из 5 звезд. 1 голосов. Иногда стандартного функционала админки не хватает. Требуется создать страницу для кастомного отчета, дашборда или инструмента управления. Битрикс позволяет легко интегрировать свои страницы

Многосайтовость в Битрикс: Как разделить контент и шаблоныМногосайтовость в Битрикс: Как разделить контент и шаблоны

Средний рейтинг Еще нет оценок Многосайтовость — одна из ключевых «фишек» Битрикс. Она позволяет управлять неограниченным количеством сайтов (с разными доменами, шаблонами и контентом) из одной административной панели на базе

Динамическое меню в Битрикс: Файлы .menu_ext.phpДинамическое меню в Битрикс: Файлы .menu_ext.php

Средний рейтинг Еще нет оценок Стандартное меню в Битрикс (.top.menu.php) статично — это просто массив ссылок. Но часто нужно, чтобы в меню автоматически появлялись разделы каталога или свежие статьи. Для