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

InitFromArray

CDBResult::InitFromArray(
 array values
 )

Метод инициализирует объект класса CDBResult значениями из массива. Нестатический метод.

Параметры

ПараметрОписание
values Ассоциативный массив со значениями для объекта класса CDBResult.


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

<?
$arr = array();
$arr[] = array("ID" => 1, "NAME" => "Заголовок 1");
$arr[] = array("ID" => 2, "NAME" => "Заголовок 2");
$arr[] = array("ID" => 3, "NAME" => "Заголовок 3");
$arr[] = array("ID" => 4, "NAME" => "Заголовок 4");

$rs = new CDBResult;
$rs->InitFromArray($arr);

$rs->NavStart(2);
if($rs->IsNavPrint())
{
     echo "<p>"; $rs->NavPrint("Элементы"); echo "</p>";
}
?>
<?
// получим список файлов и каталогов
CFileMan::GetDirList(Array($site_id, $path), $arDirs, $arFiles, $arFilter, Array($by=>$order), "DF");

// объединим файлы и каталоги в один массив
$arDirContent = array_merge($arDirs, $arFiles);

// создадим объект класса CDBResult
$rsDirContent = new CDBResult;

// инициализируем этот объект исходным массивом
$rsDirContent->InitFromArray($arDirContent);

// теперь на данном объекте 
// мы можем использовать все методы класса CDBResult
// например, "Постраничная навигация":
$rsDirContent->NavStart(50);
if($rsDirContent->IsNavPrint()) echo "<p>"; $rs->NavPrint("Файлы"); echo "</p>";
while ($arElement = $rsDirContent->Fetch()):
    // если это каталог то
    if ($arElement["TYPE"]=="D"):
        // выводим название каталога
        echo $arElement["NAME"];
    else: // иначе если это файл то
        // если это служебный файл то переходим к следующему элементу
        if ($arElement["NAME"]==".section.php") continue;
        // иначе выводим его название
        echo $arElement["NAME"];
    endif;
endwhile;
?>


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

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

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

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

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
4
Антон Долганин
Если мы выдергиваем элементы с инфоблока, а потом кормим массив InitFromArray, то при выборке из ИБ надо применять Fetch, а при выборке из InitFromArray - GetNext (если не требуется иная логика).

Ибо, если в первом случае тоже применить GetNext, тогда данные будут уже безопасными и html превратятся в сущности.

Код
while ($arElem = $rsElem->Fetch()) 
...наполняем массив, используем Fetch
...
$rsLikes->InitFromArray($arLikes);
while ($arLike = $rsLikes->GetNext())
....а теперь работаем с GetNext
В дополнение: или, в первом случае применять GetNext, тогда во втором Fetch просто.
© «Битрикс», 2001-2019, «1С-Битрикс», 2019
Наверх