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

Getlist фильтр по id. массив с одинаковыми id

00 голосов
4
В фильтре getlist'а для "ID" можно указать массив значений, если в это массиве значения
Нужно гетлистом выбрать несколько элементов по ид. соответственно, задаю в фильтр для параметра ID массив:
Код
$arFilter = Array("IBLOCK_ID"=>$arParams["IBLOCK_PRODUCTS_ID"], "ID" => Array(462, 462, 521), "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y");


То есть я задал, чтобы гетлист выбрал три элемента с указанными ID. Но выбираются только два элемента. Все из-за того, что мне нужно вывести два элемента с одинаковыми ID, но getlist выводит только один из них.

Так как мне мне получить getlist'ом два элемента с одинаковыми ID?
спросил 19 Дек, 13 от ister14ka (160 баллов)

4 Ответы

00 голосов
Цитата
xdypx пишет:
два элемента с одинаковыми ID?
двух элементов с одинаковым id нe бывает...
ответил 06 Март, 14 от Hax (1,100 баллов)
00 голосов
Это понятно, суть в том, чтобы в списке результата getlist'а получить два раза один и тот же элемент.

Есть список товаров,  каждый товар с уникальным ид, описанием и прочим. И есть что-то типа "избранного", где хранятся, например, интересные мне товары, точнее ихние id. И вот в этом "избранном" один и тот же товар может присутствовать два и более раз.
ответил 26 Июнь, 14 от ister14ka (160 баллов)
00 голосов
Думаю такое можно реализовать только вручную, после того как получили данные в getlist

Как вариант в гетлисте записывать данные в формате ключ(id элемента)=> массив данных элемента.

И потом обрабатывать исходный массив, тот который

Array(462, 462, 521)

и вот тут можно брать данные по элементу сколько угодно раз.

например,

Код
$arSource = Array(462, 462, 521);
$arData = array();
$arFilter = Array("IBLOCK_ID"=>$arParams["IBLOCK_PRODUCTS_ID"], "ID" =>$arSource, "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y");
$resList = CIBlockElement::GetList(array(), $arFilter);
while($obList = $resList->GetNextElement()){
   $arListFields = $obList->GetFields();
   //запись данных по ключам элементов
   $arData[$arListFields["ID"]] = $arListFields; 
 } 

//используем полученные значения сколь угодно раз
foreach($arSource as $intId){
   echo $arData[$intId]["NAME"];
}
ответил 26 Окт, 14 от Akylina (280 баллов)
00 голосов
Владимир Картавых,  точно, спасибо большое!!!
ответил 24 Фев, 15 от ister14ka (160 баллов)

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

0 голосов
2 ответов
0 голосов
0 ответов
спросил 30 Окт, 13 от Fatalshin (260 баллов)
0 голосов
3 ответов
спросил 23 Март, 14 от StarBlade (100 баллов)
0 голосов
3 ответов
спросил 23 Авг, 13 от terik (260 баллов)
0 голосов
2 ответов
спросил 10 Дек, 13 от WelMax (430 баллов)