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