今回はelse if文について書きたいと思います。
まずはサンプルプログラムを見てみましょう。
<?php $box = 2; if ($box == 1) { echo "number is 1."; } if ($box == 2) { echo "number is 2."; } if ($box == 3) { echo "number is 3."; }
まず、原則としてプログラムは上の行から順に実行されていきます。
if ($box == 1) の条件には合致しないので、number is 1.は表示されません。
次に、if ($box == 2) の条件に合致したので、number is 2.が表示されます。
最後に、if ($box == 3) の条件には合致しないので、number is 3.は表示されません。
ここまでは理解できると思います。
この時、プログラム全体としては合計3回の条件判定を行っています。
if ($box == 1) 、if ($box == 2) 、if ($box == 3)の3回です。
この3回という数字を覚えておいて、次のサンプルを見てみましょう。
if ($box == 1) { echo "number is 1."; } else if ($box == 2) { //ifからelse ifに変わっています echo "number is 2."; } else if ($box == 3) { // ifからelse ifに変わっています echo "number is 3."; }
実行結果としては先程の例と変わらず、number is 2.だけが表示されます。
では何が違うのでしょうか。
実はプログラム全体としての条件判定の回数が変わります。
if ($box == 1) の条件には合致しないので、number is 1.は表示されません。
ここまではさっきのプログラムと同じです。
しかし、今度は
if ($box == 2) ではなく、else if($box == 2) となっています。
elseには「それ以外の場合は」という意味があることは前回のブログで書きました。
そんなelseとifを組み合わせた else if構文はこんな意味になります。
上の条件とはここではif ($box == 1) のことを指します。
もちろん今回は変数boxの中身が2ですので、$box == 1の条件には合致しません。
かつ、$box == 2の条件には合致しますのでnumber is 2.が表示されます。
そして、最後のelse if ($box == 3) の部分ですが、else if が
「上の条件に合致しない場合で、もし・・・」という意味ですので、
else if ($box == 2)に既に合致してしまっている場合、
上の条件に合致しない場合という制約を満たさないので、条件判定を行いません。
つまり、プログラム全体としての条件判定が2回になります。
先程のサンプルと比べて条件判定の回数が1回減ったことがわかると思います。
else if ($box == 2)で合致したんだからelse if ($box == 3)は
もうやらなくていいじゃん、という効率化した書き方になります。
今、紹介したとおり、else if構文は知らなくてもifをつなげることで
プログラムを書くことはできます。
しかし、else ifを使うことで不要な条件判定を減らすことができます。
今回は3回が2回になったことで33%の効率化に成功しました。
これが1億回が3333万回になったとしたら、処理が早くなり、具体的なイメージとしては
検索結果を表示するスピードが33%早くなることになります。