戻る

条件分岐(else ifを含むif文)

JavaScript

一連のif、else構文では条件式は複数あり、該当する項目は複数ありますが、一番最初に該当した条件のみが処理されます。

<!DOCTYPE HTML>
<html lang="ja-JP">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body></body>
<script type="text/javascript">
var tokuten = 74;

var obj = document.getElementsByTagName("body")[0];
 
if(tokuten > 90){
	obj.innerHTML = "あなたの点は" + tokuten + "点です。よくがんばりました。";
}
else if(tokuten > 70){
	obj.innerHTML = "あなたの点は" + tokuten + "点で、合格です。";
}
else if(tokuten > 60){
	obj.innerHTML = "あなたの点は" + tokuten + "点で、もう少し頑張りましょう。";
}
else{
	obj.innerHTML = "あなたの点は" + tokuten + "点で、不合格です。";
}
</script>
</html>

以下のように、「else if」を誤って、「if」にすると、3つのif文になり、構文エラーは起きませんが、誤った内容で表示されてしまいますので注意が必要です。尚、一番下の「else」は条件式が「tokuten > 60」のときだけの「else」になります。

<!DOCTYPE HTML>
<html lang="ja-JP">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body></body>
<script type="text/javascript">
var tokuten = 74;

var obj = document.getElementsByTagName("body")[0];

if(tokuten > 90){
	obj.innerHTML = "あなたの点は" + tokuten + "点です。よくがんばりました。";
}
if(tokuten > 70){
	obj.innerHTML = "あなたの点は" + tokuten + "点で、合格です。";
}
if(tokuten > 60){
	obj.innerHTML = "あなたの点は" + tokuten + "点で、もう少し頑張りましょう。";
}
else{
	obj.innerHTML = "あなたの点は" + tokuten + "点で、不合格です。";
}
</script>
</html>

以下のように、条件を細かくしてすることで回避できますが、この場合だと4つのif文を通ることになりますので、要領のいい記述をするようにしましょう。

<!DOCTYPE HTML>
<html lang="ja-JP">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body></body>
<script type="text/javascript">
var tokuten = 74;

var obj = document.getElementsByTagName("body")[0];

if(tokuten > 90){
	obj.innerHTML = "あなたの点は" + tokuten + "点です。よくがんばりました。";
}

if(tokuten > 70 && tokuten <= 90){
	obj.innerHTML = "あなたの点は" + tokuten + "点で、合格です。";
}

if(tokuten > 60 && tokuten <= 70){
	obj.innerHTML = "あなたの点は" + tokuten + "点で、もう少し頑張りましょう。";
}

if(tokuten < 70){
	obj.innerHTML = "あなたの点は" + tokuten + "点で、不合格です。";
}
</script>
</html>

PHP

phpの場合、「else if」を「elseif」と書いてもエラーになりません。

<?php
header("Content-type: text/html; charset=utf-8");

$tokuten = 74;

if($tokuten > 90){
	echo "あなたの点は{$tokuten}点です。よくがんばりました。";
}
else if($tokuten > 70){
	echo "あなたの点は{$tokuten}点で、合格です。";
}
else if($tokuten > 60){
	echo "あなたの点は{$tokuten}点で、もう少し頑張りましょう。";
}
else{
	echo "あなたの点は{$tokuten}点で、不合格です。";
}
?>

以下のように記述することも可能ですが「else if」は「elseif」と記述しないとエラーになりますので、phpの場合は「elseif」で覚えるほうがよいでしょう。

<?php
header("Content-type: text/html; charset=utf-8");
 
$tokuten = 74;
 
if($tokuten > 90):
	echo "あなたの点は{$tokuten}点です。よくがんばりました。";
elseif($tokuten > 70):
	echo "あなたの点は{$tokuten}点で、合格です。";
elseif($tokuten > 60):
	echo "あなたの点は{$tokuten}点で、もう少し頑張りましょう。";
else:
	echo "あなたの点は{$tokuten}点で、不合格です。";
endif;
?>

これは、JavaScript同様間違った結果が得られます。ただし、JavaScriptのように間違った値で上書きしているわけではなく、2度出力することになります

<?php
header("Content-type: text/html; charset=utf-8");

$tokuten = 74;

if($tokuten > 90){
	echo "あなたの点は{$tokuten}点です。よくがんばりました。";
}
if($tokuten > 70){
	echo "あなたの点は{$tokuten}点で、合格です。";
}
if($tokuten > 60){
	echo "あなたの点は{$tokuten}点で、もう少し頑張りましょう。";
}
else{
	echo "あなたの点は{$tokuten}点で、不合格です。";
}
?>

以下のように修正できますが、JavaScript同様、4つのif文を通過することになります。

<?php
header("Content-type: text/html; charset=utf-8");

$tokuten = 74;

if($tokuten > 90){
	echo  "あなたの点は{$$tokuten}点です。よくがんばりました。";
}
if($tokuten > 70 && $tokuten <= 90){
	echo  "あなたの点は{$tokuten}点で、合格です。";
}
if($tokuten > 60 && $tokuten <= 70){
	echo  "あなたの点は{$tokuten}点で、もう少し頑張りましょう。";
}
if($tokuten < 70){
	echo  "あなたの点は{$tokuten}点で、不合格です。";
}
?>

inserted by FC2 system