fgets を条件とした while 文は、どのように繰り返されているのですか?

fgets はファイルから 1 行ずつデータを読み込み、最後まで読み込んだら false になります。
2021年8月15日
ユーザー

while文は、下のように()内の条件を満たす間、{}内の処理を繰り返す、というイメージを持っています。
このとき、{}内2行目の$i += 2;があることで、()内で検証される条件が1, 3, 5…と変化していくので、
いつかは条件を満たさなくなると思っています。

$i = 1;
while(10 >= $i){
    echo $i . PHP_EOL;
    i += 2;
}

もし、$i += 2;の条件が抜けている場合、ずっと$i=1なので、while文の中身が永遠にループすると思っています。

$i = 1;
while( $i >= 10){
    echo$ i . PHP_EOL;
}

今回は、fgets($fp)の値がtrueの間はwhile文を実行しています。
ただ、上の$i += 2;のような条件が変化するための式がありません。
fgets($fp)の戻り値が配列(例えば[true, true, true, true, false])になっていて、一つずつ取り出してfalseかどうかを判定しているのかと思っていたのですが、戻り値は配列ではありませんでした。
下記コードはどのような理屈でくりかえされているのでしょうか?

while (($line = fgets($fp)) !== false) {
  echo $line;
}

この回答を見るにはプレミアムプランへの登録が必要です

プレミアムプランとは?

このレッスンの質問と回答(7)