- 2007-06-14 木 22:21:43
- プログラミング
if文で条件式を工夫すれば
思うように処理を分岐することは出来ますが、
ひとつの値によって処理を分岐するのなら
switch文
の方がスマートに書けたりします。
「天気」が「晴れ」ならば、「遠足に出発する。」
「天気」が「曇り」ならば、「傘を持参する。」「遠足に出発する。」
「天気」が「雨」ならば、「体育館でお弁当を食べる。」
例えば上記はいずれも「天気」の状態によってやることが違います。
if文だと、天気==’晴れ’ のような条件式をいくつも書き連ねるわけですが
switch文ならこんな感じになります。
switch ( 天気 ) { case '晴れ': 遠足に出発する; break; case '曇り': 傘を持参する; 遠足に出発する; break; case '雨': 体育館でお弁当を食べる; break; default: 遠足に出発する; break; }
先ずは始まりの印 switch
。
続けて対象となる式や値を括弧で挟みます。
大括弧({~})の中がこのswitch文の中身になります。
天気が晴れならば、case
‘晴れ’:
に続く文が実行されます。
break
; は、そこでswitch文を終える命令です。
break;が無い場合には、次の case の評価に処理が移ります。
天気が晴れでなければ、当然該当の文は実行されず
次の case の評価に処理が移ります。
default:
は、途中break;によって
switch文を終えなかった時に実行される文を書きます。
必要なければ無くてもかまいません。
switch文の基本的な書き方
switch ( 式 ) { case 値1: 実行文1; break; case 値2: 実行文1; break; case 値3: 実行文3; break; default: 実行文4; break; }
ここで、元の文章をちょっと整理してみます。
「遠足に出発しないのは、
天気が雨のときだけで、体育館でお弁当を食べる。
その他の天気の時は必ず遠足に出発する。
また、傘を持参するのは曇りの時だけ。」
書き方は違いますが、元の文章とほぼ同じ事を意味してます。
switch文においても、caseの順番とbreak;を
上手く組み合わせれば同じ書き方が出来ます。
switch ( 天気 ) { case '雨': 体育館でお弁当を食べる; break; case '曇り': 傘を持参する; default: 遠足に出発する; break; }
先ず case ‘雨’:が評価され、天気が雨かどうか判断されます。
雨ならば「体育館でお弁当を食べる」ことになります。
ここにはbreak;があるので以降のcaseは
評価されることなくswitch文を終了します。
雨でなければ次の case ‘曇り’:が評価され、
天気が曇りかどうか判断されます。
曇りならば「傘を持参する」ことになります。
もちろん曇りでなければ次のcaseへ進みますが、
ここにはbreak;がないので、曇りの場合も次に進みます。
default:までくれば「遠足に出発する」ことになります。
ここでbreak;があるのでswitch文を終了します。
天気が晴れの場合がありませんが、
晴れならば、case ‘雨’: にも case ‘曇り’:にも合致することはないので
default:だけが評価され、遠足に出発することが出来ます。
このように書くことで、
「遠足に出発する」を何度も書かなくて済みますし、
case ‘晴れ’:を省略することもできました。
こうした使い方がswitch文の真骨頂といえます。
では、きちんと実行できるPHPのコードに翻訳してみましょう。
<?php // 天気を初期化 $Weather = '曇り'; echo '天気が', $Weather, 'ならば、'; switch ( $Weather ) { case '雨': echo '体育館でお弁当を食べる。'; break; case '曇り': echo '傘を持参する。'; default: echo '遠足に出発する。'; break; } ?>
これもifの時と同様、適当な名前をつけて保存し
ブラウザからアクセスしてみてください。
$Weather = ‘曇り’; を、’晴れ’や’雨’また他の値に書き換えて
switch文がどのように処理を分岐するか確かめてみてください。
行動こそ最大の師です。
* * *
switch文以外に登場した事柄について補足しておきます。
echo 値1, 値2, 値3, ・・・;
echoは後に続く値を出力(表示)しますが、
関数では無いので括弧で引数を囲む必要がなく、
値や変数を ,
で区切ることにより
それらを順番に出力(表示)することが可能です。
echo '天気が', $Weather, 'ならば、';
これは以下と同じ事です。
echo '天気が';
echo $Weather;
echo 'ならば、';
* * *
日本語まじりの妙なコードを書いてますが変なヤツではありません。
頭の中のアイデアをコードに変えていくプロセスが
プログラミングの最も楽しいところだと思います。
でも、私みたいに英語が苦手だと
プログラミング以前に英語でつまづいてしまいます。
ならば、いっそのこと日本語で書けばいい♪
アイデアをコードに変えるプロセスを楽しめれば
言語への理解も早いだろうと思ってのことです。
日本語・英語・プログラミング言語、どれも言語なわけで、
コンピュータにも、プログラミングにも、国境は無し。
次はループ ⇒ 繰り返す。ループだ for
- 新しい: 繰り返す。ループだ for
- 古い: もし~ならどうする? if~else if~else