• ベストアンサー

While文を使って配列の中身を全て取り出すには

よろしくお願いします。 $data=file("./log.txt"); echo "$data[0]<br>"; echo "$data[1]<br>"; echo "$data[2]<br>"; -----表示結果----- おはよう こんにちは こんばんは ------------------ 上記のプログラムを、行数が多いことを想定して While文を使い$dataの中身が無くなるまで log.txtのデータを全て表示するようにしたいと考えているのですが、 While文の条件部分をどのように記述いていいのか困ってます。 ご指導お願いします。

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

  • ベストアンサー
  • sanpee
  • ベストアンサー率50% (1/2)
回答No.1

こんばんわ、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()関数とかを使うことになるのかな? 参考になれば幸いです。 では。

mega-aki
質問者

お礼

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

その他の回答 (2)

  • kirin_f
  • ベストアンサー率51% (44/85)
回答No.3

配列の中身を順番に処理していくのは、いろいろな方法があります。 #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を使う方法はあまり使わないかも知れないですね(^^) ただ、方法として知っておくと他のことにも応用がきくので一応書いときました

mega-aki
質問者

お礼

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

noname#8330
noname#8330
回答No.2

perlでいいの? それっぽい雰囲気はあるけど・・・ ファイルの扱い方が妙だし、シェルっぽいけど絶対違うし。少なくとも言語位は指定しなよ。 --- 軽く書いてみたけど(例外処理とかは全然・・・ #!/usr/bin/env perl open FP,"<./ファイル名"; while ( <FP> ) { print $_,"<BR>"; } close FP; log.txt 焼肉食べたい。 パスタはもういらない。 ラーメンもあきた。 明日のごはんは何だろう? ./TEST.pl 焼肉食べたい。 <BR>パスタはもういらない。 <BR>ラーメンもあきた。 <BR>明日のごはんは何だろう? <BR>

mega-aki
質問者

お礼

回答ありがとうございます。 言語はPerlではなくPHPなので PHPのカテゴリーで質問しました。