- ベストアンサー
CSVデータの行数カウント
PHP初心者です。 アドバイスよろしくお願いします。 CSVデータ 20060802:1,AAA,少し 20060802:2,AAA,少し 20060802:3,AAA,少し 20060802:4,BBB,大きい 20060802:5,AAA,小さい 20060802:6,AAA,小さい 20060802:7,AAA,小さい があるとき、 そのCSVデータを読み込んで データの3列目を基準としてデータがいくつあるかを数えたい。 例えば 少し・・・・3 大きい・・・・1 小さい・・・・1 というふうに数えたい。 $filename = CSVデータファイル; $fp = fopen("$filename", "r"); if($fp == false){ exit; } else { for$i = 0; $i < sizeof($fp); $i++){ $line = explode(",", $fp[$i]); // ここで // $i[2]==AAA // のとき、AAAの行数をカウントする処理をしたい。 } }
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
http://okwave.jp/kotaeru.php3?q=2279497 とほぼ同じ処理では
その他の回答 (2)
- hrm_mmm
- ベストアンサー率63% (292/459)
なにがどううまくいかないのか解らないけど、構文が間違ってるからループが狂ってるだけなのじゃないの? >for$i = 0; $i < sizeof($fp); $i++){ 「(」が抜けてるから、ループになってない たぶん、エラーが出てるはずだと思うけど? >#1さんへ >$cnt[$line[2]]++; できるけど、初期化しておかないと、存在しない変数はインクリメントできないです。 ということで以下のようにやります。 if( array_key_exists($line[2], $cnt) ){ $cnt[$line[2]]++; }else{ $cnt[$line[2]]=1; }
- agharta
- ベストアンサー率52% (54/103)
基準データをキーとする連想配列を作って毎回1をカウントアップすればよいのではないでしょうか。 $cnt[$line[2]]++; なんてできるのかしら?! わたしも、PHPはあまり得意分野じゃないので…
補足
回答ありがとうございました。 if文を作ってみたのですがうまくいかないです・・ もう少し詳しくおねがいできますか? よろしくお願いします。 $filename = CSVデータファイル; $fp = fopen("$filename", "r"); if($fp == false){ exit; } else { for$i = 0; $i < sizeof($fp); $i++){ $line = explode(",", $fp[$i]); // ここで // $line[2]==AAA // のとき、AAAの行数をカウントする処理をしたい。 if (preg_match("/$aaa/", $AddressData[ $i ] )){ for($countA = 0;$countA < sizeof ($AddressData); $countA++ ) { echo $countA . "<br>"; } } // 上でうまくいかない・・ } }
お礼
参考にさせていただきました。 おかげで解決することができました。 ありがとうございました。