Битрикс вывести все разделы

Столкнулся с элементарной проблемой, но долго не мог решить. Нужно вывести все разделы и подразделы в виде массива. Официальная документация конечно не помогла. Но вот что я всё таки нашел.

Случай 1.
Нам надо вывести все разделы в виде одноуровнего массива

$rs_Section = CIBlockSection::GetList(array('left_margin' => 'asc'), array('IBLOCK_ID' => 8));
while ( $ar_Section = $rs_Section->Fetch() )
{
    $ar_Result[] = array(
        'ID' => $ar_Section['ID'],
        'NAME' => $ar_Section['NAME'],
        'IBLOCK_SECTION_ID' => $ar_Section['IBLOCK_SECTION_ID'],
        'IBLOCK_SECTION_ID' => $ar_Section['IBLOCK_SECTION_ID'],
        'LEFT_MARGIN' => $ar_Section['LEFT_MARGIN'],
        'RIGHT_MARGIN' => $ar_Section['RIGHT_MARGIN'],
        'DEPTH_LEVEL' => $ar_Section['DEPTH_LEVEL'],
    );
}

Так выводиться стандартный массив без иерархии и уровня вложенности.

Случай 2.
Надо вывести разделы с иерархией и уровнем вложености

function getSectionList($filter, $select)
{
   $dbSection = CIBlockSection::GetList(
      Array(
               'LEFT_MARGIN' => 'ASC',
      ),
      array_merge( 
          Array(
             'ACTIVE' => 'Y',
             'GLOBAL_ACTIVE' => 'Y'
          ),
          is_array($filter) ? $filter : Array()
      ),
      false,
      array_merge(
          Array(
             'ID',
             'IBLOCK_SECTION_ID'
          ),
         is_array($select) ? $select : Array()
      )
   );

   while( $arSection = $dbSection-> GetNext(true, false) ){

       $SID = $arSection['ID'];
       $PSID = (int) $arSection['IBLOCK_SECTION_ID'];

       $arLincs[$PSID]['CHILDS'][$SID] = $arSection;

       $arLincs[$SID] = &$arLincs[$PSID]['CHILDS'][$SID];
   }

   return array_shift($arLincs);
}   

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

$arSections = getSectionList(
 Array(
    'IBLOCK_ID' => 25
 ),
 Array(
    'NAME',
    'SECTION_PAGE_URL'
 )
);
Продолжая использовать веб- сайт beta-code.ru, вы даете согласие на обработку файлов cookie, пользовательских данных (сведения о местоположении; тип и версия ОС; тип и версия Браузера; тип устройства и разрешение его экрана; источник откуда пришел на сайт пользователь; с какого сайта или по какой рекламе; язык ОС и Браузера; какие страницы открывает и на какие кнопки нажимает пользователь; ip-адрес) в целях функционирования сайта, проведения ретаргетинга и проведения статистических исследований и обзоров. Если вы не хотите, чтобы указанные данные обрабатывались, покиньте сайт.
Принять