PHPでの質問です。

テキストファイルを1行ずつ読み込んでいき
条件にヒットした部分を取り出すようにしています。
ファイルを開いてfgetsで取得する形にしているのですが

・これをテキストファイルの最後から逆に読みこんでいく
もしくは
・実際に表示される
a,b,c,d
1,2,3,4
A,B,C,D
という表示を
A,B,C,D
1,2,3,4
a,b,c,d
という表示にする方法を教えてください。
krsortを使うと4,3,2,1という風にはなるのですが
行をソートできません。
すごく初歩的な質問かとは思いますが
アドバイスいただければと思います。

回答の条件
  • 1人2回まで
  • 登録:2007/01/09 17:36:33
  • 終了:2007/01/13 00:15:59

回答(2件)

id:ecmas No.1

ecmas回答回数9ベストアンサー獲得回数22007/01/09 18:06:04

ポイント35pt

こんな方法はどうでしょう。

//まず、arrayを作る。

$array = new array();

//そのarrayに読み込んだ行を入れる。

$array[] = $readed_line // $readed_lineには読み込んだ行が入ってる

//popで取り出して表示。

while(count($array) > 0) {

echo array_pop($array);

}

id:quocard

ありがとうございます。

array_popは知りませんでした。

これを基にして使ってみます。

2007/01/09 18:37:41
id:kn1967 No.2

kn1967回答回数2915ベストアンサー獲得回数3012007/01/09 19:22:17

ポイント35pt

http://jp2.php.net/array_reverse

array で良いならarray_reverseで配列をひっくり返すという手もシンプルですよ。ついでにfgetsもfileに変えて、、、、

if (false !== ($array = file("$filename"))) {

  $array = array_reverse($array);

  while ($array as $line) {

    echo $line . "\r\n";

  }

} else {

  echo "ファイル読み込み失敗\r\n";

}


1の方の回答の変形パターンとして

for (i=count($array)-1; i >= 0; i--) {

  echo $array[i] . "\r\n";

}

"\r\n"は改行コードとして入れてます。適宜変えてください。

いろいろありすぎて迷うかもしれませんが、それがPHPって事で、、、

id:quocard

reverseで配列をひっくり返すということですね。

現在は1行取得し、1行の中に含まれる要素を

取り出して配列にして

それらの取り出したものをテーブルに入れている状態です。

ということは

いったん取り出して要素に分解するまえに

行を要素としてまず取り込み

それをひっくり返してから1行ずつ取り出して

いくほうがよさそうですね。

書いてて自分でも混乱してきましたが・・・

2007/01/09 23:37:54

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません