• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/location/util/csvreader.php
  • Класс: BitrixSaleLocationUtilCSVReader
  • Вызов: CSVReader::FetchAssoc
public function FetchAssoc()
{
	if(!($line = $this->Fetch()))
		return false;

	if(!$this->useHeader || $this->legacy)
		return $line;

	$header = $this->header;

	$result = array();
	$colCount = count($line);
	$langFields = array();
	for($k = 0; $k < $colCount; $k++)
	{
		$fld = trim(array_shift($header));

		if(!$fld) // column grid appeared shorter than data field
			break;

		$resLine = array();
		$prev =& $resLine;
		$subFields = explode('.', $fld);

		foreach($subFields as $subfld)
		{
			$subfld = trim($subfld);

			$prev[$subfld] = array();
			$prev =& $prev[$subfld];
		}

		$prev = trim($line[$k]);

		// keep for charset conversion
		if(mb_strpos($fld, 'NAME') !== false)
			$langFields[] = &$prev;

		$result = array_merge_recursive($result, $resLine);
	}

	if (is_callable($this->callbacks['AFTER_ASSOC_LINE_READ'] ?? ''))
	{
		call_user_func_array(
			$this->callbacks['AFTER_ASSOC_LINE_READ'],
			[&$result]
		);
	}

	// character conversion
	if($this->convertCharset && self::FILE_ENCODING != SITE_CHARSET)
	{
		foreach($langFields as &$value)
		{
			$value = CharsetConverter::ConvertCharset($value, self::FILE_ENCODING, SITE_CHARSET);
		}
	}

	return $result;
}