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;
}
この回答を見るにはプレミアムプランへの登録が必要です
プレミアムプランとは?