人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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という風にはなるのですが
行をソートできません。
すごく初歩的な質問かとは思いますが
アドバイスいただければと思います。

●質問者: quocard
●カテゴリ:インターネット ウェブ制作
✍キーワード:PHP アドバイス ソート テキスト ファイル
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● ecmas
●35ポイント

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

//まず、arrayを作る。

$array = new array();

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

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

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

while(count($array) > 0) {

echo array_pop($array);

}

◎質問者からの返答

ありがとうございます。

array_popは知りませんでした。

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


2 ● kn1967
●35ポイント

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って事で、、、

◎質問者からの返答

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

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

取り出して配列にして

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

ということは

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

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

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

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ