libro
www.tuyano.com
初心者のためのPHPプログラミング入門

制御構文を覚えよう! (3/6)

作成:2010-12-03 10:02
更新:2010-12-03 10:02

■switch文による多数の分岐

ifは、二者択一の分岐でしたが、時にはもっと多数に処理が枝分かれすることもあります。特に数字などを扱う場合、「結果が1ならこれ、2ならこれ、3なら……」という具合に、値に応じてそれぞれ異なる処理をさせたい場合もあります。

こうしたときに用いられるのが「switch」文という構文です。これは、以下のような形をしています。
switch( 条件 ){
case 値1:
    ……値1の時の処理……
    break;
case 値2:
    ……値2の時の処理……
    break;

……必要なだけcaseが続く……

default:
    ……どれでもない時の処理……
}
このswitch文も、()にある条件をチェックして分岐をします。といっても、この条件は、ifのような真偽値ではありません。ごく普通の数字やテキストの値でかまいません。

このswitchは、()の条件の値をチェックし、その値が指定されたcaseにジャンプする働きをします。例えば、そこにある値が「1」ならば、「case 1:」というのを検索してそこにジャンプする、というわけです。

ただし、ここで忘れてはならないことは「switchは、caseにジャンプをするだけで、戻ったり、必要に応じて構文を終了する機能はない」ということでしょう。つまり、行きっぱなしなのです。従って、必要な処理を終えたら、構文を抜けるようにしなければいけません。

そのために用意されているのが「break」という予約語です。これは、現在実行している構文を抜けて次に進む働きをします。各caseに用意された処理の最後には、必ずこのbreakを付けるのが基本だ、と考えておきましょう。

もし、値と同じcaseが見つからなかったら? その場合は、最後にある「default:」というところにジャンプをします。このdefaultは、省略することもできます。その場合は、caseが見つからなかったらそのまま何もせずに構文を抜けて次に進みます。

このswitchを使うことで、かなり複雑な分岐も作れるようになります。下のリストに、簡単なサンプルを挙げておきましょう。これは、血液型によって表示メッセージを変えるサンプルです。最初の「$b」に、自分の血液型を設定しましょう。その血液型へのメッセージが表示されます。

ここでは、switch($b)として分岐を準備しています。そして、case "A":というように、各血液型のテキストのcaseを用意し、そこでechoを実行しています。こういう枝分かれの多い分岐は、ifでやろうとするとたくさんのif文を書かないといけません。switchによりずいぶんすっきりと書けるようになります。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

<?php
	$b = "A"; // 血液型を書く
?>

<!DOCTYPE html
	PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"
		xml:lang="ja" lang="ja"> 
	<head> 
		<meta http-equiv="Content-Type"
			content="text/html; charset=UTF-8" /> 
		<title>sample page</title>
	</head>
	<body>
		<h1>Hello PHP!</h1>
		<div>
			<?php
				switch($b){
				case "A":
					echo "あなたは几帳面ですね。";
					break;
				case "B":
					echo "あなたは自由奔放ですね。";
					break;
				case "AB":
					echo "あなたは複雑な人ですね。";
					break;
				case "O":
					echo "あなたは大物ですね。";
					break;
				default:
					echo "あなたは、人間じゃないですね。";
				}
			?>
		</div>
	</body>
</html>

※関連コンテンツ

「初心者のためのPHPプログラミング入門」に戻る