一連の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の場合、「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}点で、不合格です。"; } ?>