逗号隔开我有一个CSV文件,将其命名为data.csv
,看起来像这样:如何用相同的ID串联多行值与唯一的ID
id,position,data
1,1,Data text
1,2,Data text 2
1,3,Data text 3
2,1,Data text x
2,2,Data text y
我需要的是来串联对于所有具有相同id
的行,单个行中的值为data
。然后,将这些新获取的行打印到另一个CSV文件中。
我设法将值排列在一个数组中,但在转换为CSV文件时,它只保存其中的一个。
这里是我的代码
$file = 'data.csv';
$tsvFile = new SplFileObject($file);
$tsvFile->setFlags(SplFileObject::READ_CSV);
$tsvFile->setCsvControl(",");
foreach ($tsvFile as $line => $row) {
if ($line > 0) {
$newData[$row[0]] = array('id'=>$row[0], 'position'=>$row[1], 'data'=>$row[2]);
$newData[$row[1]] = $row[2];
}
}
//
echo '<pre>';
var_dump($newData);
//
$fp = fopen('data2.csv', 'w');
foreach ($newData as $fields) {
fputcsv($fp, $fields);
}
fclose($fp);
最后,所产生的CSV文件应该是这样的:
id,data
"1","Data text, Data text 1, Data text 2"
"2","Data text x, Data text y"
为了直观:您有一个CSV('data.csv'),看起来像第一个突出显示的块,并且想要将它解析为另一个看起来像最后一个突出显示的块的CSV文件? – Overflowh 2014-09-01 18:52:35
。 Thx ... – Dario 2014-09-01 19:08:42