長いプルダウンメニューをfor文でスマートに【初心者による初心者の為のPHP】

最近はまた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になったら終了」という感じです。

繰り返し(ループ)関数にはforeachforwhileが主としてあります。

foreach

配列の中身がなくなるまで繰り返すときに使います。

while

条件がクリアしている間繰り返したいときに使います。

for

初期値から決められた回数を繰り返すときに使います。

いざ、コーディング

今回は繰り返したい回数が決まっているのでfor文を使うことにしました。

初期値が1(月)で12(月)になるまで繰り返します。

whileでもできないことはないでしょうけど、素直にforでいいでしょう。

 

ということでこんな感じになりました。

<?php
	for($i = 1; $i < 13; $i++){
		echo '<option value="'.$i.'">'.$i.'</option>';
	}
?>
for(式1式2式3)=
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>';
		}
	}
?>
date関数を使って、今月に自動的に合わせるとかやっても面白いです。

以上です!もっといい書き方がある場合はぜひ教えてください!!

コメント

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