1つ前の記事で、料理をテーマにwhile文を説明する際に
こんなプログラムを紹介しました。
<?php while(true){ //無限に繰り返せ if(串をにんじんに刺してスッと入ったら){ break; //繰返しの強制終了 } //待つ }
煮込み系料理の煮込み加減をwhile文を使って表しています。
ここで2つ、新しい書き方が登場しています。
今回は無限ループという現象を中心に書いていきたいと思います。
無限ループとは、その名の通り、無限に繰り返す(ループ = loop)
してしまう現象です。
例えば、こんなプログラムが無限ループとなります。
<?php $i = 0; //初期化する while($i < 4){ echo $i; echo "<br>"; //改行 }
上図にあるように、今回のサンプルプログラムは$iの値を変化させる変化式が
記述されていません。そのため、$iはずっと0のままとなり、永遠に$iが4以上に
なることは無く、無限にループすることになります。
これが無限ループです。
もう一つサンプルを見てみましょう。
<?php $i = 0; while(true){ //trueまたは1と書くと無限ループ echo $i; echo "<br>"; $i++; //変化式 if($i >= 4){ break; //ループを強制終了 } }
今度は変化式を入れたのでちゃんと実行出来ました。
このプログラムの特徴の1つ目は whileの()の中の終了条件が「true」= 真
となっている部分です。
実は()の中にtrue または、 1 と書くと無限ループを意味します。
何回繰り返せばいいかが事前にわからない時、trueや1を用います。
特徴のもう一つはbreakです。英単語の意味どおり、break = 壊す、です。
breakと書くと強制的にループをぬけ出すことができます。
従って、先ほどのプログラムでは$iが4以上になったときに無限ループを
脱出します。
余談ですが、私は大学時代のプログラミングの課題で良く無限ループを
起こしていました。。。当時は無限ループを起こすと、大学院生の
ティーチングアシスタントのところにいって、無限ループを止めてもらうように
お願いしなければならなかったので恥ずかしい思いをしました。
今回は無限ループについて書いていきました。