0

「id」と「name」の 2 つの列を持つ csv があり、同じ id を共有する行をマージし、それらをコンマで区切る必要があります。

id      name
39695   NFL: Cowboys @ Giants
39699   NFL: Colts @ Bears
39699   NFL: Steelers @ Broncos
39699   NFL: Eagles @ Browns
39699   NFL: Panthers @ Buccaneers

の中へ

id      name
39695   NFL: Cowboys @ Giants
39699   NFL: Colts @ Bears, NFL: Steelers @ Broncos, NFL: Eagles @ Browns, NFL: Panthers @ Buccaneers

必要なのは、エコー バック アウトまたは新しい .csv ファイルだけです。

お手伝いありがとう。

**編集

<"?php

$lines = file('sport3.csv');

foreach($lines as $line)
{
list($id, $name) = explode(',', $line);
$merged[$id][] = $name;
}

foreach($merged as $id => $vals)
{
echo '"' . $id . '", "' . implode(',', $vals) . '\"\n';
}
?>
4

1 に答える 1

1

PHP で CSV 関数用に特別に設計されたものを使用する方が安全です。

// parse thru data
$mergedData = array();
$handle = fopen('sport3.csv', 'r');
if (!$handle) throw new Exception("Can't open original CSV file");
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
    list($id, $name) = $data;
    if (empty($mergedData[$id])) $mergedData[$id] = array();
    $mergedData[$id][] = $name;
}
fclose($handle);

// save merged data
if (count($mergedData) > 0) {
    $handle = fopen('sport3-merged.csv', 'w');
    if (!$handle) throw new Exception("Can't open CSV file for merged data");
    foreach($mergedData as $id => $vals) {
        array_unshift($vals, $id);
        if (!fputcsv($handle, $vals)) throw new Exception("Can't write data to merged CSV file");
    }
    fclose($handle);
}

それが役立つことを願っています。

于 2013-03-19T04:08:08.890 に答える