人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPの質問です CSVの計算したいので方法教えてください
a.csv
======
玉子,50
玉子,-50
猫,50
猫,-12
======
があり
これを一列目が同じものを2列目の数を合計したいと思ってます

こんな感じです
b.php
=====
玉子,0
猫,38
=====

どのようなPHPプログラムを組めばいいでしょうか?
教えてください よろしくお願いします


●質問者: gaugjiuaej
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

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ファイルが巨大な場合には適しません。


gaugjiuaejさんのコメント
完成したものを file_put_contents でファイルに出力する場合はどうすればいいのでしょうか?
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ