0

我想解析一个包含多个代码的csv文件,有些是重复的,我需要对它进行分组并在最后保留一个unic代码。

file.csv CSV 文件:

code    data
12345   45
12345   35
12346   2
12347   3
12345   5

文件 2.csv:

code,data
12345,85
12346,2
12347,3

PHP 解析 CSV 文件:

<?php

$tsvFile = new SplFileObject('file.csv');
$tsvFile->setFlags(SplFileObject::READ_CSV);
$tsvFile->setCsvControl("\t");

$file = fopen('file2.csv', 'w');
$header = array('col1', 'col2');
fputcsv($file, $header, ',', '"');

foreach ($tsvFile as $line => $row) {
    if($line > 0) {
        fputcsv($file, array($row[0], $row[1]), ',', '"');
    }
}
fclose($file);

?>

该脚本只是从制表符解析为逗号,而不是按代码分组。

任何帮助表示赞赏。

4

1 回答 1

1

尝试这个:

$newData = array();
foreach ($tsvFile as $line => $row) {
    if ($line > 0) {
        if (isset($newData[$row[0]])) {
            $newData[$row[0]]+= $row[1];
        } else {
            $newData[$row[0]] = $row[1];
        }
    }
}
foreach ($newData as $key => $value) {
    fputcsv($file, array($key, $value), ',', '"');
}

没有测试过这个,但它应该可以工作。

于 2013-03-08T17:56:17.773 回答