if文とswitch文で条件分岐をしてみよう|初心者にもわかるPHP入門(6)

スポンサーリンク




第5回では新しい言葉「配列」について取り上げて「変数」と「配列」の違いとその配列の書き方や使い方についてお話をしました。
前回お話したように配列は数値や文字列など色々なのものをいくつも格納する事ができて、その中身をいつでも出し入れができる便利なものです。
もしまだ見ていない方は

PHPの配列ってどんなもの?どうやって作るの?|初心者にもわかるPHP入門(5)
PHPの演算子って何のこと?初心者にもわかるPHP入門(4)
PHPの変数って何??初心者にもわかるPHP入門(3)
PHPで何ができるの??初心者にもわかるPHP入門(2)
PHPって何?初心者にもわかるPHP入門(1)

を一度見てみてください。

「変数」や「配列」は作成して格納できるようになっただけでは、ただ物を入れておくだけでプログラムとしては全く意味がありません。この格納している値を利用して、プログラムに何らかのアクションを起こさせて初めて利用する価値があります。
そこで今回は比較演算子と前回も出てきましたif構文、そして新たな命令文としてswitch構文を使用して条件分岐をする方法をご紹介していきたいと思います。

条件分岐をするif文とswitch文

今回はまず「switch」という新たな命令文をご紹介します。このswitchは前回ご紹介した「if文」と同様に、変数や配列の中身を調べたり(比較する)ためによく用いられる命令文です。
では、「if文」と「switch文」では何が違うのでしょうか?

if文とswitch文の違い

条件分岐をする際に、例えば「AであればB」のように単純に2分岐であれば、ifもswitchもそれほど違いはありませんが、条件分岐が多岐にわたる場合はif文の場合にはプログラムが冗長(長くなって)見にくくなってしまいます。
また、多分岐の場合の処理速度は「switch」の方が早いと言われています。
そういう面で2分岐の場合は「if」文を使用して、多分岐の場合に「switch」を使うという使い分けができると思います。

ただ、明確に絶対にif文を使用しなければいけないというケースもありませんし、その逆も定義されているわけではありません。
その場に応じて、どちらを使用すると効率よく簡潔にプログラムを書けるかを意識して判断すればいいと思います。

ifと演算子を使った条件分岐

前回もifを使用して比較を行いましたが単純な一つの分岐でした。そこで今回はこのif文での多分岐の書き方を具体的にソースを書いてみます。
以下のソースを書いて実行して見ましょう。

このように書くと、実行結果は3と表示されると思います。
最初に$flagに1を入れておき、$flagの内容を比較しています。最初に$flagが1と同じであれば、$aを表示してくださいと命令していますが、今回の場合は$flagは3ですのでecho $a;は実行されません。
また、次も同様に$flagが2ではないのでこちらも実行されません。そして次の$flag==3がtrueとなりますので、ここで初めてecho $c;が実行されます。
最後のelseはどれもtrueでない場合に実行されますが、今回の場合は$cが3でtrueとなりますので実行されません。
このようにelseifを使用すればいくつでも条件を増やして中身を比較していく事が可能です。

複数条件の条件分岐

ここまでで、簡単な比較の仕方ができるようになったと思いますが、今までのソースでは単純に一つの比較対象のみで比較していました。
でもこのif文は複数の条件に対しての比較もできます。
例えば「Aが1でBが2ならば」、「Aが1でBが2ではないなら」といった例です。
具体的にソースに書いてみます。

上記の1番目の例文では、「$aが1でなおかつ$bが2なら」という条件を書いていて「&&」であらわします。この場合は条件に合致していますので、「条件にあっています」と表示されます。
2番目の例文は似ているように見えますが、「$aが1でなおかつ$bが2ではないなら」という条件になりますので、この場合は$bは2が入っていますので「条件にあっていません」と表示されることになります。
3番目の例文は、また新たな書き方が出てきましたが、「||」で二つの条件を繋ぐと「$aが1または$bが1なら」という条件になります。
つまりこの場合は、「$aか$bのどちらかが1ならば」という条件に合致していますので「条件にあっています」が表示されます。

複数条件を一つ一つ書いていくとかなりの労力となり、プログラムもさらに冗長になってしまいますので、このように複数比較できる方法を覚えておくといいかと思います。

switch文の書き方

上記のようにif文を使用して色々な比較を行えるのですが、PHPではもう一つ比較する命令文があります。さきほども書いた「switch」を使用する書き方です。
switchの書き方は

switch (条件分岐の対象) {
case 条件;
処理を記述
break;
case……
(条件の数だけ続く)
}

のような書き方をします。実行結果が同じになるようなソースをif文とswitch文で書いてみますと

if文は最初に出てきた例文と全く一緒です。これをswitchの構文で書くとこのようになります。まず($flag)で条件分岐の対象を指定します。
その次にcaseで条件を指定して、合致した場合の処理を書きます。
次にbreak;と見慣れないものがでてきましたが、これを入れないでおくと全てのechoが実行されてしまいますので、必ずbreak;で処理を終わらせるようにします。
defautはどの条件にも当てはまらない場合に実行されます。

switchを使用して数字の比較演算

この応用として、比較演算子を使用する事もできます。

大なり小なりを使用して「~以上」や「~未満」かどうかの判定を行う事が出来ますし、先ほど出てきた&&を使用して複数の条件を指定する事もできます。
また今回は条件に数字を入れていますが、日本語やアルファベットでも条件にする事が出来ますので比較するのも便利かと思います。

まとめ

今回は少し新しく出てきた言葉や命令文が多かったかもしれませんが、例文を元に自分なりに色々な例文を書いてみる事で、どのような動きで表示されるのかが理解しやすくなると思いますので頭の中に完全に身につくまで色々アレンジをしてみてください。

スポンサーリンク



記事をシェアお願いします