最近はまたwebサービス製作に没頭しています。
今度こそ自信あります!(毎回同じ気持ちですがw)
同じことを何回もやっているはずなのに、いざ書こうとするとググらなければ手が動きません。
ということで備忘録がてら、今回はPHP言語のfor文についてです。
今回やりたいこと
今回は、1月から12月のプルダウンメニューを作りたい、というシチュエーション。
最初はHTMLだけで地道にやりました。
<select name="month"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> <option value="6">6</option> <option value="7">7</option> <option value="8">8</option> <option value="9">9</option> <option value="10">10</option> <option value="11">11</option> <option value="12">12</option> </select>
選択肢が12個だから無茶苦茶長いわけでもありませんが、スキルアップのために繰り返しができる関数を使ってコードを短くしたいと思います。
繰り返し関数の種類
規則性があるときはコンピュータの得意分野だと思います。
そういうときは繰り返しができる関数を使用します。
イメージとしては、「最初が1で前回に1足していって、12になったら終了」という感じです。
繰り返し(ループ)関数にはforeach、for、whileが主としてあります。
foreach
配列の中身がなくなるまで繰り返すときに使います。
while
条件がクリアしている間繰り返したいときに使います。
for
初期値から決められた回数を繰り返すときに使います。
いざ、コーディング
今回は繰り返したい回数が決まっているのでfor文を使うことにしました。
初期値が1(月)で12(月)になるまで繰り返します。
whileでもできないことはないでしょうけど、素直にforでいいでしょう。
ということでこんな感じになりました。
<?php for($i = 1; $i < 13; $i++){ echo '<option value="'.$i.'">'.$i.'</option>'; } ?>
for(初期値(最初に実行する式); 継続する条件(これがfalseになったら終了); 毎回これを実行)
『$i < 12』にならないようにだけ注意です。
そうしてしまうと、「未満」なので11月で終わってしまいます。
行数は半分以下になりましたが、HTML的には同じものが出力されます。
応用
応用で『selected』もできます。
例えば4月をデフォルト選択にしたい場合、if関数を使ってあげるとできちゃいます。
<?php for($i = 1; $i < 13; $i++){ if($i==4){ echo '<option value="'.$i.'" selected>'.$i.'</option>'; }else{ echo '<option value="'.$i.'">'.$i.'</option>'; } } ?>
以上です!もっといい書き方がある場合はぜひ教えてください!!
コメント