dポイントプレゼントキャンペーン実施中!

こんにちは。
お世話になります。

早速ですが、やりたい事は・・・
複数のデータファイルを用意しています。
それぞれに異なるデータが入っています。
そして、そのファイル毎の行数を取得し、かつそれぞれにタイトルをつけたいのです。

例)
1.txtには10行分→出力する時には「帽子:10個」
data2.txt→8行→出力する時には「植木鉢:8個」
abc.txt→30行→→出力する時には「チョコレート:30個」




そしてそれを改行しながら出力
例)
帽子:10個
植木鉢:8個
チョコレート:30個





ひとつのファイルに対して行数を得るのは下記の通りできました。

$f_URL="1.txt";//ファイル指定
$line=file($f_URL);//配列に
$gyosu=count($line);//要素数をカウント
echo "帽子:$gyosu個";//出力

ひとつひとつやればできないこともないのですが、同じ処理をやるので何かまとめて処理できる方法があるんだろうなぁ・・・とは思ったのですが・・・行き詰まりました(汗)

あとできればデータファイルの内容はいじらないように使いたいのです。(1.txtの1行目にタイトルをいれておく...などは避けたいのです)

もし何かよい方法があればご教授&アドバイスよろしくお願い致します。

A 回答 (2件)

連想配列を使ったらどうでしょう。


ただし、品名とファイル名が1対1であるという条件付きです。

$files = array("帽子" => "1.txt", "植木鉢" => "data2.txt", ...);
foreach ($files as $item => $fname) {
  echo "$item:".count(file($fname))."個\n";
}
    • good
    • 0
この回答へのお礼

ご回答有難うございました。
かなりシンプルに表現できるのですね。参考にさせて頂きます!

お礼日時:2007/06/05 13:44

まぁこんな感じですかね。


単位を覚えておく必要がないなら、もう少し簡単にできますね。

<?PHP
$list=Array(
"1.txt"=>Array("product"=>"帽子","unit"=>"個")
,"data2.txt"=>Array("product"=>"植木鉢","unit"=>"個")
,"abc.txt"=>Array("product"=>"チョコレート","unit"=>"個")
);

foreach($list as $f_URL=>$array){
if(file_exists($f_URL)){
$line=file($f_URL);//配列に
$gyosu=count($line);//要素数をカウント
echo "{$array['product']}:{$gyosu}{$array['unit']}<br>\n";//出力
}
}
?>
    • good
    • 0
この回答へのお礼

ご回答有難うございました。
単位が変更される場合はこちらを使えば多種類に対応できそうですね!参考になりました!

お礼日時:2007/06/05 13:46

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