А нужно лишь вернуться к определенной его теме и еще раз внимательно все прочитать.
Возьмем типичный пример: нужно посчитать количество элементов в инфоблоке, которые соответствуют каким-то параметрам. Что обычно делают люди: делают выборку, затем формируют в цикле массив элементов. После этого либо в цикле устанавливают счетчик для подсчета, либо после формирования массива выполняют функцию count(), которая высчитывает количество элементов.
Но зачем проделывать столько ненужных манипуляций, ведь все решается гораздо проще:
//подключаем модуль инфоблоков, если он не подключен ранее
CModule::IncludeModule(
"iblock"
);
//id нужного инфоблока
$iblock_id
= 3;
$arFilter
= Array(
"IBLOCK_ID"
=>
$iblock_id
,
"ACTIVE"
=>
"Y"
);
$res_count
= CIBlockElement::GetList(Array(),
$arFilter
, Array(), false, Array());
На выходе, в переменной $res_count будет значение количества элементов, соответствующих указанному фильтру. В нашем случае это все активные элементы из инфоблока с ID равным 3.
Чем эта конструкция отличается от типичных конструкций по выборке элементов? Дело в том, что мы третьим параметром (arGroupBy) в методе GetList указали пустой массив - Array(). Посмотрим, что нам говорит на этот счет документация:
"arGroupBy - Массив полей для группировки элемента. Если поля указаны, то выборка по ним группируется (при этом параметр arSelectFields будет проигнорирован), а в результат добавляется поле CNT - количество сгруппированных элементов. Если указать в качестве arGroupBy пустой массив, то метод вернет количество элементов CNT по фильтру."
Что мы, собственно, и сделали. Обычно третий параметр выставляют в false, тогда происходит обычная выборка элементов со всеми полями и свойствами, которые мы указали в arSelectFields. Но стоит только вместо false указать пустой массив Array() и метод GetList вернет нам количество элементов.
Пример реализации кода: