[PHP] For文で無限ループ地獄

※当サイトでは広告を掲載しています

久しぶりにやってしまいました。無限ループ地獄。PCのCPUは100%状態のまま、マウスカーソルの動きはカクカクになり、キーボードからの入力もかなり待たされるくらいの高負荷状態。

そもそも、なんで無限ループなんか起こしてしまったのかというと…繰り返し文でのミスが原因でした。

車のタイヤサイズを簡単に検索できるツール(むか~しPerlで作ったもの)をPHPに移植していて、タイヤの幅を指定するプルダウンを以下のような繰り返し文で作っていました。(ここでは、わかりやすく簡単に書き直しています)

for( $i = 135; $i <= 355; $i + 10 ){
    print "<option value='{$i}'>{$i}</option>\n";
}

はい、ここで無限ループ発生です。なぜかというと、この状態では $i の値が全く変わらないので、 $i = 135 のまま延々と回り続けるのでした。

なんでコーディング時に気付かなかったんだろう…。

ということで、正しくは

for( $i = 135; $i <= 355; $i += 10 ){
    print "<option value='{$i}'>{$i}</option>\n";
}

となるわけで。

これに気付くのに結構な時間を費やしてしまったわけで、いやはや、お恥ずかしい話です。

VBみたいに、stepで指定できれば分かりやすくていいかもしれないですね。

コメント

タイトルとURLをコピーしました