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

PHPについて質問です。
動的に生成される以下のような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等は使用できません


よろしくお願い致します。

●質問者: uchisuke
●カテゴリ:インターネット ウェブ制作
✍キーワード:Blue CSV GREEN PHP RED
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● KUROX
●5ポイント

■CSVの読み方

http://phpspot.net/php/man/php/function.fgetcsv.html

fgetcsvを使って読み込む。

>PHPにはfgetcsvとかfputcsvという組み込み関数がすでに用意

>されているのでそれを用いる。

以下から情報を得ました。

http://blog.cles.jp/item/1376

配列とかに格納されたら、後は自力で・・。

◎質問者からの返答

関数そのものは知っていました。

知りたかったのは一連の解だったので・・・。

ありがとうございました。


2 ● GEN111
●65ポイント

こんな感じでどうでしょうか。

ファイルのエラーチェックはしてませんのでよしなに。

<!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>

Comma-Separated Values - Wikipedia

◎質問者からの返答

やはりこの方法が一般的なのですね。

ありがとうございました。


3 ● zebevogue
●10ポイント

合計はarray_sum

http://phpspot.net/php/man/php/function.array-sum.html

配列のソート関数を使えば良いかと。

http://phpspot.net/php/man/php/function.sort.html

◎質問者からの返答

こちらも関数そのものは知っています。

ありがとうございました。

関連質問


●質問をもっと探す●



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