Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Как получить список уникальных значений свойства инфоблока?

00 голосов
3
Нужно получить список уникальных значений свойства инфоблока, чтобы вставить их в <select>
Сделал вот так:

Код
$res = CIBlockElement::GetList(Array(), array("IBLOCK_ID"=>1,'!PROPERTY_TEST'=>false,"ACTIVE"=>"Y"), false, false, Array('ID','NAME','PROPERTY_TEST'));
               $props_values=array();
               while($ob = $res->GetNextElement()){
                  $arFields = $ob->GetFields();
                  $props_values[] = $arFields['PROPERTY_TEST_VALUE'];
               }
               $props_values = array_unique($props_values);
Но получается очень долго, т.к. всё это проходит в цикле (несколько свойств) и элементов очень много.


Можно как-то оптимизоровать?
Спасибо.
спросил 07 Авг, 13 от Babyk (140 баллов)

3 Ответы

00 голосов
Код
CModule::IncludeModule("iblock");
$property_enums = CIBlockPropertyEnum::GetList(Array("SORT"=>"ASC"), Array("IBLOCK_ID"=>49, "PROPERTY_ID" => "224"));
$enum_fields = $property_enums->GetNext();
ответил 07 Авг, 13 от ister14ka (160 баллов)
00 голосов
Цитата
rsmol пишет:
Можно как-то оптимизоровать?

Используйте группировку по свойству:
Код
$arPropValues = array();
$dbItems = CIBlockElement::GetList(array(), array('IBLOCK_ID' => 1, 'ACTIVE' => 'Y'), array('PROPERTY_TEST'));
while($arItem = $dbItems->GetNext(true, false)) {
    $arPropValues[] = $arItem['PROPERTY_TEST_VALUE'];
}
ответил 09 Окт, 13 от Delp (7,220 баллов)
00 голосов
http://www.weblim.ru/posts/bitrix/47/
http://devfix.ru/web_studio/blogs/513/
http://hello-site.ru/web-notes/highload-infoblock/
http://aposnov.ru/вывод-пользовательских-свойств-в-бит/

Все ссылки рабочие ,проверял
ответил 02 Ноя, 15 от аноним

Похожие вопросы

0 голосов
2 ответов
0 голосов
5 ответов
спросил 07 Дек, 13 от Snezhka (2,240 баллов)
0 голосов
1 ответ
спросил 05 Апр, 14 от cRaNk (100 баллов)
0 голосов
4 ответов
спросил 20 Янв, 14 от Snezhka (2,240 баллов)