プロが教えるわが家の防犯対策術!

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


}
}

A 回答 (3件)

http://okwave.jp/kotaeru.php3?q=2279497
とほぼ同じ処理では
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/08/03 13:38

なにがどううまくいかないのか解らないけど、構文が間違ってるからループが狂ってるだけなのじゃないの?



>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;
}
    • good
    • 0

基準データをキーとする連想配列を作って毎回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>";
}
}
// 上でうまくいかない・・


}
}

補足日時:2006/08/02 20:14
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!