こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

プログラムの実行について

os は windows
php のバージョンは 5.2.11.11
です。


$logmax = file("test.txt");
$start = $logmax[count($logmax) - 1];
$start = trim($start);

if ($start == "終了"){
$start = 1;
}

if (is_file("aaa.txt")){
$word = fopen("aaa.txt", "r");
for ($line = $start; !feof($word); $line++){
$lines = fgets($word);
$lines = trim($lines);
if ($lines){

以下処理
}
}
}

という感じの処理なのですが、三行目までは "test.txt" の最後の文字又は数字を抜き取る作業で
最初の if 関数はもし最後に "終了" ならば $start = 1 にするという感じです。

次の if 関数からが問題なのですが
$start に 1 が入って "aaa.txt" の一行目からのスタートしてくれるのですが、
$start に 2 が入ってる場合は "aaa.txt" の二行目からスタートしたいのですが、
スタートしてくれず "aaa.txt" の一行目からスタートになってしまいます。

if 関数だとスタートが一行目からになってしまうのでしょうか??
それとも
$lines = fgets($word);
の所で "aaa.txt" の一行目からになっているのでしょうか??

何が原因か分かる方がいましたらどうすればいいか教えてください。
宜しくお願いします

投稿日時 - 2009-10-22 20:35:02

QNo.5388349

すぐに回答ほしいです

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

> これがもし10行目から読み込みたい場合はどうすればいいんですかね?
No.3の「fgets($word); // 1行読み飛ばし」のところをforループの中に入れて9回実行してください。
9行が読み飛ばされて次は10行目からになります。

投稿日時 - 2009-10-23 14:48:29

お礼

Gottholdさん回答有難う御座います!!

Gottholdさんのおかげで成功しました!!
本当に有難う御座います。

投稿日時 - 2009-10-23 15:05:25

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.3

こんな感じですかね
$word = fopen("aaa.txt", "r");
fgets($word); // 1行読み飛ばし
$lines = fgets($word); // 2行目から読み込みになる

投稿日時 - 2009-10-23 09:53:45

補足

php504さん回答有難う御座います

こんな簡単だったんですね(汗)
これがもし10行目から読み込みたい場合はどうすればいいんですかね?

投稿日時 - 2009-10-23 12:44:18

ANo.2

> 読み飛ばす処理なんて出来るのですか??
fgetsで読んだデータを使わなければ良いだけだと思いますが…。

投稿日時 - 2009-10-22 21:21:21

補足

??
それじゃどうやって "aaa.txt" の二行目からスタートできるのですか??

投稿日時 - 2009-10-22 21:37:05

ANo.1

ifは関数ではなく文です。

2行目から始まらないのは2行目から始まる処理なんて書かれていないからです。
$lineは1行読む毎にインクリメントされているだけなので、
初期値が何であろうが読み取り動作には関係ありません。
実際、読み取るだけなら$lineなんて変数はなくても動きます。

> $lines = fgets($word);
> の所で "aaa.txt" の一行目からになっているのでしょうか??
そうです。1行目がいらないならちゃんと読み飛ばす処理を入れてください。

投稿日時 - 2009-10-22 20:54:12

補足

Gottholdさん回答有難う御座います
>1行目がいらないならちゃんと読み飛ばす処理を入れてください。

読み飛ばす処理なんて出来るのですか??
なにぶん初心者なものですみません。。
fgetで何行目からと言う指定が出来ないから読み飛ばす事は
不可能だと思っているのですが…

投稿日時 - 2009-10-22 21:08:09

あなたにオススメの質問