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


Пользовательское свойство - Файл - Множественное / Как работать?

0 голосов
Создал: Пользовательское свойство - Файл - Множественное
Забил туда пару картинок
Читаю:
Код
   $arOrder = Array("ID"=>"ASC");
   $arFilter = Array("IBLOCK_ID"=>$arParams["IBLOCK_ID"],"ID"=>intval($_REQUEST["ID"]));
   $arSelectFields = Array(
      "*",
      "PROPERTY_ADD_PIC",
      );
   $ListElements = CIBlockElement::GetList($arOrder, $arFilter, false, false, $arSelectFields);

   while($Element = $ListElements->Fetch()) :


получаю какую-то фигню в $Element["PROPERTY_ADD_PIC_VALUE"], не массив, не строка, что-то не внятное, т.е. при print_r, не выводится нифига, выводится просто через echo, при чём при выводе echo $Element["PROPERTY_ADD_PIC_VALUE"][0] выводится "22" (айдишники элементов - 207, 208).

Вопрос как эту фигню разобрать на нормальный массив, чтобы foreach можно было заюзать?
спросил 23 Апр, 13 от Lisica (900 баллов)

5 Ответы

0 голосов
Вам выводятся айдишники файлов, как получить данные файла см. CFile::GetFileArray()
ответил 23 Апр, 13 от Delp (7,220 баллов)
0 голосов
я знаю, что мне выводится и знаю как пользоваться CFile::GetFileArray(), но во входных параметрах этого метода должны быть айдишники, которые я не могу получить из структуры которую имею.

echo показывает вот так:
Код
207

208


print_r так:
Код
Array(
)


как эту фигню превратить в нормальный массив типа:
Код
Array(
[0]=>207
[1]=>208
)
ответил 23 Апр, 13 от Lisica (900 баллов)
0 голосов
Цитата
Рамиль Миннигалиев пишет:
print_r так:

print_r() чего именно вы делаете?

У вас, вероятно, свойства в общей таблице хранятся. Вот что по этому поводу написано в документации к CIBlockElement::GetList():

Цитата
Примечание: если в массиве используются свойство, являющееся множественным, то для элементов, где используются несколько значений этого свойства, будет возвращено несколько записей вместо одной. Для решения этой проблемы инфоблоки нужно перевести в Режим хранения свойств в отдельных таблицах, в этом случае для свойства будет отдаваться массив значений. Либо можно не указывать свойства в параметрах выборки, а получать их значения на каждом шаге перебора выборки с помощью _CIBElement::GetProperties().
ответил 18 Июнь, 13 от Delp (7,220 баллов)
0 голосов
а вот этот пост похож на правду, спасибо, пойду пробовать, о результатах доложу ;)
ответил 21 Сен, 13 от Lisica (900 баллов)
0 голосов
ну, чувак, респект и уважуха тебе, люто плюсую - ОНО. :)
ответил 20 Дек, 13 от Lisica (900 баллов)