Документация для разработчиков

GetPropertyValuesArray

CIBlockElement::GetPropertyValuesArray(
 &$result,
 $iblockID,
 $filter,
 $propertyFilter = array(),
 $options = array()
);

Получение значений свойств элементов одного инфоблока для компонента. Строго рекомендуется как замена кода вида

$iterator = CIBlockElement::GetList();
while ($obj = $iterator->GetNextElement())
{
  $properties = $obj->GetProperties();
}
в целях улучшения производительности.

Параметры функции

Параметр Описание
result Массив результатов, в качестве ключей должен содержать ID элементов. Передается по ссылке. Для каждого элемента вернет массив значений свойств.
iblockID ID инфоблока (ЕДИНИЧНОЕ значение)
filter Фильтр CIBlockElement::GetList для отбора элементов. Ключ IBLOCK_ID указывать нет необходимости - он будет добавлен внутри метода.
propertyFilter Фильтр для отбора свойств. необязательный. Может содержать 3 ключа. либо ID - массив ID возвращаемых свойств. либо CODE - массив символьных кодов свойств. При указании обоих ключей учитывается только ID. Третий ключ - фильтр по активности свойств. Если не указать - будут выведены только активные свойства
options Дополнительные настройки. Необязательный. Возможные ключи:
USE_PROPERTY_ID = Y - ключами массива значений для каждого элемента использовать ID свойств. Иначе - символьные коды.
PROPERTY_FIELDS - массив полей СВОЙСТВА, возвращаемых в результате.
GET_RAW_DATA => Y - в этом случае в возвращаемых данных не будет ключей с ~ в начале, а оставшиеся не будут приведены к html-безопасному виду.

Возвращаемое значение

Возвращаемое значение - нет.

Примеры использования





Пользовательские комментарии

Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

Для этого нужно всего лишь авторизоваться на сайте

Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
1
Дмитрий Крюков
Сообщение непромодерировано, возможны ошибки и неточности.
Получение свойств методом GetPropertyValuesArray() для любого количества элементов обходятся статичным количеством запросов, за исключением получения значений списочных свойств, запросы на получение которых выполняются в цикле для каждого значения свойства.
Пример получения данных:
Код
$elements = [];
$order = ['SORT' => 'ASC'];
$filter = ['IBLOCK_ID' => 1];
$rows = CIBlockElement::GetList($order, $filter);
while ($row = $rows->fetch()) {
    $row['PROPERTIES'] = [];
    $elements[$row['ID']] =& $row;
    unset($row);
}

CIBlockElement::GetPropertyValuesArray($elements, $filter['IBLOCK_ID'], $filter);
unset($rows, $filter, $order);
Чтобы итоговый результат GetPropertyValuesArray() был таким же, как при использовании GetNextElement() совместно с GetProperties() в массиве, передаваемом первым параметром ключами элементов должны быть их идентификатора, а так же у каждого элемента должен быть определен пустой ключ "PROPERTIES" не равный null, иначе данные элемента будут перезаписаны данными их свойств.
Цитата
Строго рекомендуется как замена кода вида ... GetNextElement() ... GetProperties()
Метод GetPropertyValuesArray() актуален только если речь идет о получении данных свойств нескольких элементов инфоблока, от двух элементов и более.
Если необходимо получить данные только одного элемента инфоблока, то лучше пользоваться связкой GetNextElement() ... GetProperties(), т.к. в этом случае GetPropertyValuesArray() проигрывает ему как в количестве выполняемых запросов, так и в скорости получения итогового результата примерно в 2 раза.
© «Битрикс», 2001-2019, «1С-Битрикс», 2019
Наверх