動的に生成される以下のようなCSVを集計したいと思っています。
最も良いと思われる方法を教えてください。
------------
blue,1,man
green,-1,woman
red,1,man
darkgreen,1,man
darkblue,-1,woman
geen,1,man
red,1,man
red,1,man
------------
※各色毎の合計値を算出したいです
※出来れば合計値の高い順にソートしたいです。
※各色はユーザーが自由に追加できます=固定ではありません
※出来れば性別で絞込みなんかができるとベストです
※理由があってSQL等は使用できません
よろしくお願い致します。
■CSVの読み方
http://phpspot.net/php/man/php/function.fgetcsv.html
fgetcsvを使って読み込む。
>PHPにはfgetcsvとかfputcsvという組み込み関数がすでに用意
>されているのでそれを用いる。
以下から情報を得ました。
配列とかに格納されたら、後は自力で・・。
こんな感じでどうでしょうか。
ファイルのエラーチェックはしてませんのでよしなに。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html> <head> </head> <body> <?php $csvfile = 'test.csv' ; $fp = fopen($csvfile, 'r') ; $votes_all = array() ; // 全体 $votes_man = array() ; // 男性 $votes_woman = array() ; // 女性 while ($line = fgets($fp)) { list($color, $val, $sex) = explode(',', chop($line)) ; // 全体 $votes_all[$color] += $val ; // 男女別に if ($sex == 'man') $votes_man[$color] += $val ; else $votes_woman[$color] += $val ; } echo '<pre>' ; print_r($votes_all) ; print_r($votes_man) ; print_r($votes_woman) ; echo '</pre>' ; ?> </body> </html>
やはりこの方法が一般的なのですね。
ありがとうございました。
こちらも関数そのものは知っています。
ありがとうございました。
関数そのものは知っていました。
知りたかったのは一連の解だったので・・・。
ありがとうございました。