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

よろしくお願いします。

$data=file("./log.txt");

echo "$data[0]<br>";
echo "$data[1]<br>";
echo "$data[2]<br>";

-----表示結果-----
おはよう
こんにちは
こんばんは
------------------

上記のプログラムを、行数が多いことを想定して
While文を使い$dataの中身が無くなるまで
log.txtのデータを全て表示するようにしたいと考えているのですが、
While文の条件部分をどのように記述いていいのか困ってます。
ご指導お願いします。

A 回答 (3件)

こんばんわ、mega-akiさん



ちょっと質問と違いますがwhileを使わない別の書き方があります。
私はあまりwhileを使わず配列の展開にはforeachを多様してます。

==
$data=file("./log.txt");

foreach($data as $value){
echo "$value<br>\n";
}
==

こう書くことで配列$dataの要素がなくなるまでループが起こります。

($data as $value)は$dataの要素を順次$valueへ格納してくれます。

どうしてもwhileを使うことを考えるとなると
push()関数とかを使うことになるのかな?

参考になれば幸いです。
では。
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございます。

まだPHPの勉強を始めたばかりなので
foreachまで頭が回りませんでした。
なるほど!と言う感じです。
大変参考になりました。

お礼日時:2004/10/18 01:25

配列の中身を順番に処理していくのは、いろいろな方法があります。


#1さんの方法もそのひとつです。単純に表示させるだけならforeachが一番よいと思います。
参考までにその他の方法を書きますね。

・forを使って
for($i = 0; $i < count($data); $i++){
echo $data[$i] . "<br>\n";
}

・whileを使って
$i = 0;
while($i < count($data)){
echo $data[$i] . "<br>\n";
$i++;
}

whileを使う方法はあまり使わないかも知れないですね(^^)
ただ、方法として知っておくと他のことにも応用がきくので一応書いときました
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

一つの事をするにも色々な方法があるんですね。
大変参考になりました。
色々と応用できるよう頑張ります。

お礼日時:2004/10/18 15:03

perlでいいの?


それっぽい雰囲気はあるけど・・・

ファイルの扱い方が妙だし、シェルっぽいけど絶対違うし。少なくとも言語位は指定しなよ。

--- 軽く書いてみたけど(例外処理とかは全然・・・

#!/usr/bin/env perl
open FP,"<./ファイル名";

while ( <FP> ) {
print $_,"<BR>";
}
close FP;


log.txt
焼肉食べたい。
パスタはもういらない。
ラーメンもあきた。
明日のごはんは何だろう?

./TEST.pl
焼肉食べたい。
<BR>パスタはもういらない。
<BR>ラーメンもあきた。
<BR>明日のごはんは何だろう?
<BR>
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

言語はPerlではなくPHPなので
PHPのカテゴリーで質問しました。

お礼日時:2004/10/18 01:28

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