При работе с Битрикс столкнулись с задачей экспорта массива некоторых свойств разделов инфоблока из системы, импорта в систему и использования в формате массива. Для экспорта и импорта с формированием массива был выбран формат файлов csv и соответствующая библиотека.

    Для импорта в csv файл необходимо:

  1. В файле после подключения хедера подключить модуль работы с инфоблоками.

                                        CModule::IncludeModule('iblock');
                                    

  2. Сформировать массив для выгрузки. Для примера приведем массив из нескольких свойств разделов инфоблока:

                                    $a = array();
                                    $rsSections = CIBlockSection::GetList(array(),array("IBLOCK_ID" => 12,), false, array("ID","NAME","UF_LINK"));
                                    while($ar_result = $rsSections->GetNext()){   
                                    $a[$ar_result['ID']]['NAME'] = $ar_result['NAME'];
                                    $a[$ar_result['ID']]['LINK'] = $ar_result['UF_LINK'];
    
                                }
                                print_r($a);
                            

  3. Добавить в файл следующие строки библиотеки:

                            class CSV {
    
                            private $_csv_file = null;
                            public function __construct($csv_file) {
                            if (file_exists($csv_file)) { //Если файл существует
                            $this->_csv_file = $csv_file; //Записываем путь к файлу в переменную
                        }
                        else throw new Exception("Файл \"$csv_file\" не найден"); //Если файл не найден то вызываем исключение
                    }
    
                    public function setCSV(Array $csv) {
                    $handle = fopen($this->_csv_file, "a"); //Открываем csv для до-записи, если указать w, то  инфомация которая была в csv будет затерта
    
                    foreach ($csv as $value) { //Проходим массив
                    fputcsv($handle, explode(";", $value), ";"); //Записываем, 3-ий параметр - разделитель поля
                }
                fclose($handle); //Закрываем
            }
    
    
            public function getCSV() {
            $handle = fopen($this->_csv_file, "r"); //Открываем csv для чтения
    
            $array_line_full = array(); //Массив будет хранить данные из csv
            while (($line = fgetcsv($handle, 0, ";")) !== FALSE) { //Проходим весь csv-файл, и читаем построчно. 3-ий параметр разделитель поля
            $array_line_full[] = $line; //Записываем строчки в массив
        }
        fclose($handle); //Закрываем файл
        return $array_line_full; //Возвращаем прочтенные данные
    }
    
    }
    
    

  4. Сформировать строки из элементов одномерных массивов для записи их в файл. Элементы в строке нужно разделить запятыми, по окончании одномерного массива перевести курсор на новую строку.

    Необходимо создать в файловой системе пустой файл формата csv для записи в него массива и указать путь к файлу.

            foreach($a as $value){ 
            $line1 = ""; 
            $line1 = $value['NAME'].";".$value['LINK']."\n"; //Формируем строки
    
            $line1 = array($line1);
            $csv_new = new CSV("services/test.csv"); //Указываем путь к файлу
            $csv_new->setCSV($line1); //Записываем в файл
            print_r($line1); 
        }
    

    Происходит выгрузка массива в файл.

  5. Для экспорта из csv файла необходимо:

  6. В файле после подключения хедера подключить модуль работы с инфоблоками.

            CModule::IncludeModule('iblock');
        

  7. Добавить в файле строки библиотеки для чтения из файла csv.

            class CSV {
    
            private $_csv_file = null;
    
            public function __construct($csv_file) {
            if (file_exists($csv_file)) { //Если файл существует
            $this->_csv_file = $csv_file; //Записываем путь к файлу в переменную
        }
        else throw new Exception("Файл \"$csv_file\" не найден"); //Если файл не найден то вызываем исключение
    }
    
    public function setCSV(Array $csv) {
    $handle = fopen($this->_csv_file, "a"); //Открываем csv для до-записи, если указать w, то  ифномация которая была в csv будет затерта
    
    foreach ($csv as $value) { //Проходим массив
    fputcsv($handle, explode(";", $value), ";"); //Записываем, 3-ий параметр - разделитель поля
    }
    fclose($handle); //Закрываем
    }
    
    
    public function getCSV() {
    $handle = fopen($this->_csv_file, "r"); //Открываем csv для чтения
    
    $array_line_full = array(); //Массив будет хранить данные из csv
    while (($line = fgetcsv($handle, 0, ";")) !== FALSE) { //Проходим весь csv-файл, и читаем построчно. 3-ий параметр разделитель поля
    $array_line_full[] = $line; //Записываем строчки в массив
    }
    fclose($handle); //Закрываем файл
    return $array_line_full; //Возвращаем прочтенные данные
    }
    
    }
    
  8. Указать путь к csv файлу с экспортированным содержимым, получить массив и записать в переменную.

            $csv = new CSV("services/test.csv");  //Указываем путь к файлу
            $get_csv = $csv->getCSV(); //Получаем значения массива
            print_r($get_csv);
        

  9. Таким образом можно экспортировать/импортировать массив в файл формата csv.