PHPプログラミングの条件分岐では、複数分岐に「else if」と「elseif」の2通りの書き方があります。どちらを使っても動作は同じに見えますが、実は注意点があります。
そこで今回は、「else if」と「elseif」の違いや注意点、使い分けの方法について解説していきます。今まで気にせず使っていた人も、この機会にぜひご覧ください。
目次
PHPの「else if」と「elseif」の違い
PHPの条件分岐(if文)で複数の条件で分岐させたいときに使うのが、「else if」と「elseif」です。
条件分岐で使う際の役割に違いはありません。どちらが正解ということもありません。基本的に、全く同じだと考えて良いでしょう。しかしそれは、条件分岐のif文に「{ }(波括弧)」を使用した場合に限られてしまいます。
PHPの「else if」は「:(コロン)」を使えない
PHPの条件分岐に「:(コロン)」を使い、複数条件の分岐に「else if」を使うと「Parse error」になってしまいます。
条件分岐に「:(コロン)」を使いたい場合には、複数条件の分岐には「elseif」を使いましょう。また、複数条件の分岐に「else if」を使いたい場合には、条件分岐には「{ }(波括弧)」を使いましょう。
なお、「elseif」の場合、条件分岐に「:(コロン)」と「{ }(波括弧)」の両方とも使えます。特にこだわりがなければ、「elseif」を使うことで、エラーの数を減らすことができるかもしれません。
PHPの「else if」と「elseif」の動作を確認
実際に「else if」と「elseif」の動作に違いがないかの確認をしてみましょう。
まずは、PHPソースコードの条件分岐に「{ }(波括弧)」を使った際の「else if」の動作を確認してみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?php $score = 72; if ($score >= 80){ echo '大変よくできました。'; }else if ($score >= 60){ echo 'よくできました。'; }else if ($score >= 40){ echo 'もう少し頑張りましょう。'; }else{ echo 'あなたは補習授業を受けてください。'; } ?> |
問題なく、複数分岐内の処理が出力されました。
PHPソースコードの条件分岐に「{ }(波括弧)」を使ったまま、「else if」を「elseif」に変更した動作も確認してみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?php $score = 72; if ($score >= 80){ echo '大変よくできました。'; }elseif ($score >= 60){ echo 'よくできました。'; }elseif ($score >= 40){ echo 'もう少し頑張りましょう。'; }else{ echo 'あなたは補習授業を受けてください。'; } ?> |
こちらも問題なく、複数分岐内の処理が出力されました。
上記サンプルコードの通り、PHPソースコードの条件分岐に「{ }(波括弧)」を使った際の「else if」と「elseif」の動作に違いはありませんでした。
次に、PHPソースコードの条件分岐に「:(コロン)」を使った際の「else if」の動作を確認してみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?php $score = 72; if ($score >= 80): echo '大変よくできました。'; else if ($score >= 60): echo 'よくできました。'; else if ($score >= 40): echo 'もう少し頑張りましょう。'; else: echo 'あなたは補習授業を受けてください。'; endif; ?> |
複数分岐内の処理が出力されるはずですが、パースエラーとなりました。
PHPソースコードの条件分岐に「:(コロン)」を使ったまま、「else if」を「elseif」に変更した動作も確認してみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?php $score = 72; if ($score >= 80): echo '大変よくできました。'; elseif ($score >= 60): echo 'よくできました。'; elseif ($score >= 40): echo 'もう少し頑張りましょう。'; else: echo 'あなたは補習授業を受けてください。'; endif; ?> |
こちらは問題なく、複数分岐内の処理が出力されました。
上記サンプルコードの通り、PHPソースコードの条件分岐に「:(コロン)」を使った際には、「else if」はパースエラーとなり、「elseif」は正常に動作しました。
条件分岐には「{ }(波括弧)」と「:(コロン)」のどちらを使うべきか
条件分岐に「:(コロン)」を使うと「else if」を使ったときに、パースエラーになってしまうことは理解できたと思います。それでは、PHPプログラミングの条件分岐には、「{ }(波括弧)」と「:(コロン)」のどちらを使うべきなのでしょうか?
一見、「else if」と「elseif」の両方で使える「{ }(波括弧)」一択のように思えるかもしれませんが、そうとも限りません。
条件分岐に「:(コロン)」を使った方がソースコードがすっきりして、可読性が高まるともいえます。可読性の高いソースコードの方が、処理を追いやすくなるので保守性も向上します。
しかし、システム開発の現場では、他のプログラミング言語の経験者も多く、条件分岐に使うのは、「{ }(波括弧)」の方が一般的だといえます。
他の処理の条件分岐は「{ }(波括弧)」を使っているのに、一部の条件分岐は「:(コロン)」を使っているのは可読性の高いソースコードとはいえません。また、馴染みのある書き方の方がソースコードを追いやすいですし、条件分岐の範囲が括弧で囲まれている方が、わかりやすい人も多いでしょう。
つまり、複数人で行うシステム開発の現場では、「{ }(波括弧)」を使う方が無難だといえます。個人で開発・管理しているのであれば、好みに合った方を選択しても問題ないでしょう。
なお、「else if」と「elseif」のどちらを使うべきかについては、見た人にソースコードの意味が伝わらないことはないはずなので、どちらでも良いでしょう。もちろん、パースエラーにならない「elseif」を使った方が無難だとはいえますね。
まとめ
PHPの条件分岐で使う「else if」と「elseif」に大きな違いはありません。ただし、条件分岐に「{ }(波括弧)」ではなく、「:(コロン)」を使う場合には注意が必要です。
条件分岐を「:(コロン)」で書いて、複数分岐に「else if」を使うとパースエラーになってしまいます。特に理由がなければ、条件分岐には「{ }(波括弧)」を使い、複数分岐には「elseif」を使いましょう。これが複数人で行うシステム開発現場の、スタンダードな書き方だといえます。