Разделить запятую значение поля

1

Я пытаюсь импортировать CSV для магазина с подмножеством данных из существующего файла CSV. Мне нужно разделить один элемент из столбца (столбец 3, category_id), который содержит несколько значений, разделенных запятыми, а затем объединить их с одним другим столбцом (Product_id) для создания нескольких строк в CSV импорта. См. Следующие примеры.

Оригинальный CSV

Product_id;article_id;category_id;
"1";"0001";"2,4,6"

Нужна она в новый CSV файл

Product_id;category_id    
"1";"2"    
"1","4"    
"1","6"

Я попробовал только функцию fegetcsv для чтения в CSV и распечатать целое в массив, но я понятия не имею, что делать дальше.

<?php
$handle = fopen ("articles.csv","r");
while ( ($data = fgetcsv ($handle, 1000, ";")) !== FALSE ) {
$column3[] = $data[3];
}
fclose ($handle);
//edit:
print_r($column3);
?> 

Я получил:

Array ([0] => category_id [1] => 1 [2] => 0001 [3] => 2,4,6
  • 1
    Есть ли конкретная причина, по которой вы хотите сделать это в php? Это одноразовая вещь?
  • 0
    сделать автоматизированное решение для импорта / cronjob для клиента
Теги:
csv

1 ответ

2
Лучший ответ

Быстро и грязно:

$csvData = file('articles.csv');
$matches = array();
$output = "";
foreach($csvData as $csvLine) {
    if(preg_match('/"(.+)";".+";"(.+)"/', $csvLine, $matches))
    {
        $numbers = explode(',', $matches[2]);
        foreach($numbers as $number) {
            $output .= "\"{$matches[1]}\";\"{$number}\"" . PHP_EOL;
        }
    }
}
  • 0
    Привет спасибо за anwser, но вывод должен быть разделен 2-е поле вывода на 3 новые строки.
  • 0
    Ах, извините, неправильно прочитал, обновлю мой ответ.
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню