• ベストアンサー

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の行数をカウントする処理をしたい。 } }

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

http://okwave.jp/kotaeru.php3?q=2279497 とほぼ同じ処理では

wanwan_55
質問者

お礼

参考にさせていただきました。 おかげで解決することができました。 ありがとうございました。

その他の回答 (2)

  • hrm_mmm
  • ベストアンサー率63% (292/459)
回答No.2

なにがどううまくいかないのか解らないけど、構文が間違ってるからループが狂ってるだけなのじゃないの? >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)
回答No.1

基準データをキーとする連想配列を作って毎回1をカウントアップすればよいのではないでしょうか。 $cnt[$line[2]]++; なんてできるのかしら?! わたしも、PHPはあまり得意分野じゃないので…

wanwan_55
質問者

補足

回答ありがとうございました。 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>"; } } // 上でうまくいかない・・ } }

関連するQ&A