▽1
●
tobeoscontinue ベストアンサー |
<?php $csv = []; foreach(file('a.csv') as $line) { list($name, $value) = explode(',', trim($line)); $csv["$name"] = (array_key_exists($name, $csv) ? $csv["$name"]: 0)+intval($value); } foreach ($csv as $name => $value) print $name.','.$value."\n";
一列目が同じものを判別するにはif文を使うのが一般的だと思うのですが連想配列を
用いる方法で書いてみました。
fileで配列に取り込みforeachで各行を処理します。
trimで改行コードを削除しexplodeで分割したものをlistで$nameと$valueに代入します。
$nameをキーに連想配列$csvに足し込みます
array_key_existsで三項演算子を使っている部分がスマートぢゃないですが。
処理が終わるまで全てメモリ内にため込みますのでa.csvファイルが巨大な場合には適しません。