@asubay99

Что сделать что бы при импорте .csv все данные записались в массив отдельно?

При импорте данных из файла .csv
5cb617a453702124664934.png
В массиве они сохраняются вот так
5cb61827a2231592861478.png
А нужно что бы код и цена были тоже отдельными элементами так же как и их значения.
Вот код
<?php
$rows = array_map('str_getcsv', file('Update.csv'));
$header = array_shift($rows);
$data = array();
foreach ($rows as $row)
{
	$data[] = array_combine($header, $row);
}
echo "<pre>";
var_dump($data);die;
echo "</pre>";
$xml = new DOMDocument('1.0','utf-8');
$items = $xml->createElement('items');
$xml->appendChild($items);
foreach($data AS $key => $val) 
{	
	$item = $xml->createElement('item');
	$items->appendChild($item);
		
	foreach($val AS $field_name => $field_value) 
	{	
		$field_name = preg_replace("/[^A-Za-z0-9]/", '', $field_name);
		$name = $item->appendChild($xml->createElement($field_name)); 
		$name->appendChild($xml->createTextNode($field_value)); 
	}
}
$xml->formatOutput = true; 
$xml->save('xml-import.xml');
?>
  • Вопрос задан
  • 36 просмотров
Пригласить эксперта
Ответы на вопрос 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
CSV - Comma Separated Values - значения, разделённые запятыми. У вас же в файле в качестве разделителя используется точка с запятой. Значит нужно передавать дополнительный параметр в str_getcsv. Для этого можно обернуть её в анонимную функцию.
$rows = array_map(function($row) { return str_getcsv($row, ';') }, file('Update.csv'));
Ответ написан
Комментировать
irishmann
@irishmann
Научись пользоваться дебаггером
Как минимум нормально распарсить CSV-файл
https://www.php.net/manual/ru/function.fgetcsv.php
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы