Нашел, как сделать изящно с помощью API
Код |
---|
$dbRes = CIBlockElement::GetList(array(), array("IBLOCK_CODE" => $arParams["CUR_IBLOCK_CODE"], "!PROPERTY_".$code => false), array("PROPERTY_".$code)); |
в итоге получим, что нужно.
По порядку:
- 2-ой массив - массив фильтров, интересен второй фильтр: он позволяет исключить из выборки пустое значение (те элементы, у которых значения не заданы будут сгруппированы как раз в эту группу)
- 3-ий массив - массив группировки: в нем-то и вся соль, он группирует элементы по указанному свойству. Плюс в результирующем массиве для каждого значения будет выдано количество элементов имеющих его.
В итоге получил DBResult вида
Код |
---|
Array
(
[PROPERTY_BRAND_VALUE] => 133
[~PROPERTY_BRAND_VALUE] => 133
[CNT] => 3
[~CNT] => 3
)
|
Код |
---|
Array
(
[PROPERTY_BRAND_VALUE] => 135
[~PROPERTY_BRAND_VALUE] => 135
[CNT] => 1
[~CNT] => 1
)
|
Код |
---|
Array
(
[PROPERTY_BRAND_VALUE] => 138
[~PROPERTY_BRAND_VALUE] => 138
[CNT] => 1
[~CNT] => 1
) |