我正在尝试为商店导入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
答案 0 :(得分: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;
}
}
}