PHPを勉強中です
while構文でcontinueを使うと無限ループにような状態(更新しても30秒読み込みを続け、最終的に表示されない)になりました。
その理由がなぜかわからないため、質問させていただきます。
「何がしたかったのか」
7の倍数だけを抜いた1~100までの数字を改行して出力する
→「continue文を使って7で割り切れる数字を出力しないようにする」
→
if($i % 7 == 0 ){
continue;
}
以下のコードで無限ループのような状態(更新しても30秒読み込みを続ける)になりました。
PHP
1 2$i = 0; 3while ($i <= 100){ 4 if($i % 7 == 0 ){ 5 continue; 6 } 7echo $i.'<br>'; 8$i++; 9} 10//結果:30秒でタイムアウト。(無限ループ??) 11
ちなみに$i++;の位置をずらした結果、思った結果がでたのでここが原因だと思います。
以下が上手くいったコードです。
PHP
1$i = 0; 2while ($i < 100){ 3$i++; 4 if( $i % 7 == 0 ){ 5 continue; 6 } 7echo $i.'<br>'; 8} 9//結果:7の倍数だけを抜いた、1~100までの数字を改行して出力 10
参考書,Progate,ネットの記事によって変数の更新($i++;)部分の位置はバラバラなので
どちらでも良いのかなと思っております。
また、処理の流れも以下のように解釈しており、問題点がどこか分かりません。
ーーーーーーーーーーーーーーーーーーーーーーーー
・初期化
・条件式の評価がtrueなのでループする
・(7で割り切れる場合のみ、処理をスキップする)
・$iを改行込で表示
・$i に1を足す。
ーーーーーーーーーーーーーーーーーーーーーーーー
初歩的な質問で恐縮ですが、よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー