最近、いつ泣きましたか?

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" の一行目からになっているのでしょうか??

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

A 回答 (4件)

> これがもし10行目から読み込みたい場合はどうすればいいんですかね?


No.3の「fgets($word); // 1行読み飛ばし」のところをforループの中に入れて9回実行してください。
9行が読み飛ばされて次は10行目からになります。
    • good
    • 0
この回答へのお礼

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

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

お礼日時:2009/10/23 15:05

こんな感じですかね


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

この回答への補足

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

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

補足日時:2009/10/23 12:44
    • good
    • 0

> 読み飛ばす処理なんて出来るのですか??


fgetsで読んだデータを使わなければ良いだけだと思いますが…。

この回答への補足

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

補足日時:2009/10/22 21:37
    • good
    • 0

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



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

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

この回答への補足

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

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

補足日時:2009/10/22 21:08
    • good
    • 0

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