PHP講座 第2回 -条件分岐-

こんにちは第2回目です。

前回は変数に値を入れて表示するということをやりましたが、今回はその変数の値をチェックして条件に合致する場合の処理と、合致しなかった場合の処理をしてみます。

if構文

条件を判断するためによく用いられるのが「if」です。
この「if」を用いた文のまとまりをif構文と言うことがあります。

if構文はif(条件式){処理}で記述されます。
では、一番シンプルなif構文を見てみましょう。

$hensuu = "変数";
if($hensuu == "変数"){
	echo "hensuuは「変数」である。";
}

これを実行すると「hensuuは「変数」である。」と表示されます。
if( )内の部分で条件の比較を行い、続く{ }内が条件に合致した場合の処理になります。

条件式では、

$a == $b : $aと$bは一致
$a != $b : $aと$bは異なる
$a > $b : $aは$bより大きい
$a < $b : $aは$bより小さい
$a => $b : $aは$bと同じか大きい
$a =< $b : $aは$bと同じか小さい

というようにいくつかの等号記号が使えます。

  • ※ifで比較する場合はif()内が=ではなく==になっていることに注意!
  • =は代入するという意味なので、代入できれば{ }内が実行されてしまいます。

if構文では合致しなかった場合のみ実行する処理も記述できます。

$a = 5;
if($a == 3){
	echo "aは3だよ";
}else{
	echo "aは3じゃない";
}

「else」というのは、それ以外の場合という意味で、if()内の条件に合致しない場合に実行されます。
このサンプルを実行すると「aは3じゃない」と表示されます。
このようにif()内に合致しないものは全てelse以降の{}内の処理にまわされます。

また、if()内のの条件には合致しないが、別の条件に合致する場合を判定したいときもあります。
その場合は「elseif(条件式)」を使用することで判定できます。
例えば

$a = 5;
if($a == 3){
	echo "aは3だよ";
}elseif($a == 5){
	echo "aは3じゃないけど、5だよ";
}else{
	echo "aは3でも5でもないよ";
}

この実行結果は「aは3じゃないけど、5だよ」です。
elseifとelseは同時に使うことが出来ます。
その際、else{}内はif(条件式)とelseif(条件式)の両方に合致しなかった場合実行されます。

$a = 5;
if($a == 3){
	echo "aは3だよ";
}elseif($a == 2){
	echo "aは3じゃないけど、2だよ";
}elseif($a == 5){
	echo "aは3じゃないけど、5だよ";
}else{
	echo "aは3でも5でもないよ";
}

このようにelseifは複数回記述することも可能です。

if構文まとめ

  • 変数が条件に合うかどうかはif(条件式)で判定できる。
  • 条件式では==で同じ、!=で違う、<>で大小の比較が出来る。
  • 条件に合わない場合はelse{}内の処理を行なう。
  • 条件に合わない場合でさらに判定を行なう場合はelseif(条件式)
  • else{}内は全ての条件にあてはまらなかった場合のみ実行される。

switch構文

if構文で全ての条件判定が出来るのですが、elseifがたくさんになりすぎるのも見にくいし、書くのが面倒です。
そこでswitch構文というものを利用します。

switch構文は以下のように記述します

$a = 1;
switch($a){
	case 0:
		echo "aは0だ";
		break;
	case 1:
		echo "aは1だね";
		break;
	case 2:
		echo "aは2だよ";
		break;
}

この実行結果は「aは1だね」です。
switch構文ではこのようにswitch(変数)の変数と一致するcaseの処理が実行されます。
これによって毎回elseifや==などの記述をしなくても比較できます。

  • それぞれの処理の後にはbreak;をつけよう
  • そうしないとその後の処理まで実行してしまうから

上のswitch構文は以下のif構文の処理と同じです。

$a = 1;
if($a == 0){
	echo "aは0だ";
}elseif($a == 1){
	echo "aは1だね";
}elseif($a == 2){
	echo "aは2だよ";
}

どちらがわかりやすいか、書きやすいかは人それぞれだと思いますが、判定条件が多くなればなるほどswitch構文の方が読みやすいと思います。

switch構文でもif構文同様、文字列の比較をすることができます。

$a = "変数";
switch($a){
	case "変数":
		echo "aは変数だよ";
		break;
	case "分数":
		echo "aは分数だね";
		break;
}

この実行結果は「aは変数だね」です。

また、if構文のelseに対応するものとしてdefaultというものがあります。

$a = "ユウ";
switch($a){
	case "カニモモンガ":
		echo "aはカニモモンガだよ";
		break;
	default:
		echo "aはカニモモンガじゃない";
}

defaultを記述し、その後に処理を記述することで条件に合致しない場合の処理を書くことが出来る。

switch構文まとめ

  • switch構文はswitch(変数){case 条件 : 処理}
  • 処理の後にはbreak;をつけよう
  • caseでは数字だけではなく、文字列も比較できる
  • 全ての条件にあてはまらない場合の処理はdefault:処理で記述する

簡単なくじのゲームを作ってみよう

さて、ここまできたらもう既にくじ引きゲームを作れる技術は身についてるハズだ。
と、そのまえにひとつランダムな数字を取得する方法を覚えてほしい。

//乱数発生
$random_num = mt_rand(0,4);

これを実行すると$random_numには0から4のランダムな数字が代入される。
これをつかってくじ引きをしたいと思う。

概要はこうだ。
1.ランダムな数字を作成
2.ランダムな数字を条件で判定し、数字ごとにメッセージを表示

では、書いてみよう。

//乱数発生
$random_num = mt_rand(0,4);
echo "乱数は" .$random_num ."<br />";
//条件で判定
switch($random_num){
	case 0:
		echo "大当たり!グアム旅行に行っちゃおう!自分の金で";
		break;
	case 1:
		echo "あたり。おめでとう!君の夢の中に行こうか?";
		break;
	case 2:
		echo "そんなに急がなくてもだいじょうV♪";
		break;
	case 3:
		echo "そろそろPHPにも慣れたかな?こんな感じでバリバリやっちゃえ!";
		break;
	default:
		echo "残念。はずれ。罰ゲームしたい?じゃぁ…腕立て伏せ千回ね。";
}

このコードを実行してみると、どれかの文字が表示されるよ。
そのページをもう一度更新すると文字が変わるはず(変わらない場合は何度か更新してみよう)

こんな感じでランダムに文字を表示する仕組みが出来上がり!
ちょっとひねれば、スロットとかも出来ちゃうよ。

動画はこちら

じゃ、またね。

  1. コメント 0

  1. トラックバック 0

return top