【PHP】if文で条件分岐をする!書き方や使い方を分かり易く解説!
条件分岐はPHPだけでなく、他の言語でも最も重要な機能の一つです。
サーバー側(Java,PHP,C#等)のプログラミングとは、if文等の条件分岐の集まりといっても過言ではありません。
そのくらい重要な役割を占めていますので、しっかり学びましょう!
ここでは、初心者にも分かり易くPHPのif文の書き方、使い方を解説していきます。
目次
if文(条件分岐)とは
条件分岐とはある条件によって処理が分岐することです。
例えば、トイレには男子トイレと女子トイレがあります。
しかし、そこではある条件によってどちらのトイレに行くかが決まります。
その条件とは性別です。性別が男性なら男子トイレ、女性なら女子トイレにいきます。
このように、ある条件によって違う処理を行う(行動をする)ことを条件分岐といいます。
プログラムの条件分岐はブール値によって評価されます。
条件式trueである場合、PHPが実行されますが、falseだった場合、その処理を無視するようになります。
if文の書き方
if文の書き方は以下のようになります。
1 2 3 4 5 |
<?php if (条件式) { echo 処理内容; } ?> |
if文の基本的なサンプルコード
if文の基本的なサンプルコードを見てみましょう。
次のサンプルコードでは、if文を使ってお互いの変数を比べた結果を表示するコードになっています。
if文の例1
1 2 3 4 5 6 7 8 9 |
<?php $a = 40; $b = 30; if ($a > $b) { echo "aはbよりも大きいです。"; } echo "処理を終了します。"; ?> |
出力結果
aはbよりも大きいです。処理を終了します。
変数aの値は変数bの値よりも大きい為、条件式ではtrueと判断されます。
その為、if文の下に書かれてある処理が実行されます。
次の例2では変数aの値を変数bの値よりも小さくして実行してみます。
if文の例2
1 2 3 4 5 6 7 8 9 |
<?php $a = 15; $b = 30; if ($a > $b) { echo "aはbよりも大きいです。"; } echo "処理を終了します。"; ?> |
出力結果
処理を終了します。
変数aの値は変数bの値よりも小さい為、条件式ではfalseと判断されます。
ですので、ifの下に書かれている処理はスルーされてしまいます。
if文の使い方
コードを作成するときは、さまざまな条件に対してさまざまなアクションを実行する必要があります。
これを行うには、コードで条件文を使用できます。
PHPでは、次の条件文があります。
if文: 1つの条件が真の場合にコードを実行します
if-else文: 条件が真の場合はいくつかのコードを実行し、条件が偽の場合は別のコードを実行します
if…else-if…else文: 3つ以上の条件に対して異なるコードを実行します
if…elseの使い方
if…elseは条件式がtrueだった場合とfalseだった場合
と別々の処理を行うことができます。
if…elseは以下のように書きます。
1 2 3 4 5 6 7 |
<?php if (条件式) { // trueの場合の処理内容; } else { // falseの場合の処理内容; } ?> |
条件式に対してtrueだった場合は、ifの括弧内の処理を行い、
falseだった場合は、elseの括弧内の処理を実行できます。
if…elseを使った次の例を見てみましょう。
if…elseの例1
1 2 3 4 5 6 7 8 9 10 11 |
<?php $a = 40; $b = 30; if ($a > $b) { echo "aはbよりも大きいです。"; } else { echo "aはbよりも小さいです。"; } ?> |
出力結果
aはbよりも大きいです。
変数aの値は変数bの値よりも大きいので条件式はtrueと判断され、ifの括弧内の処理が実行されています。
しかし、ここで変数aの値は変数bの値を入れ替えて実行してみましょう。
if…elseの例2
1 2 3 4 5 6 7 8 9 10 11 |
<?php $a = 30; $b = 40; if ($a > $b) { echo "aはbよりも大きいです。"; } else { echo "aはbよりも小さいです。"; } ?> |
出力結果
aはbよりも小さいです。
変数aの値は変数bの値よりも小さいので条件式はfalseと判断され、elseの括弧内の処理が実行されています。
このように、if…elseではtrue、falseだった場合、別々の処理を行うことができます。
if…else-if…elseを使い方
if…else-if…elseは、ifとelseの組み合わせになります。
if文を拡張して、3つ以上の条件分岐を書く時に使います。
if…else-if…elseの書き方は以下のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 |
<?php if (条件式1) { // 条件式1がtrueの場合の処理内容; } else if (条件式2) { // 条件式2がtrueの場合の処理内容; } else { // 条件式2がfalseの場合の処理内容; } ?> |
まずは、条件式1を判断します。そして、条件式1がtrueだった場合はifの括弧内にある処理を実行し、
falseだった場合は、else-ifの条件式2判断します。
条件式2がtrueだった場合はelse-ifの括弧内にある処理を実行し、
falseだった場合は、elseの括弧内の処理を実行します。
if…else-if…elseを使った次の例を見てみましょう。
まずは、変数aの値を変数bの値より大きくして処理を行ってみます。
if…else-if…elseの例1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?php $a = 40; $b = 30; if ($a > $b) { echo "aはbよりも大きいです。"; } else if ($a == $b) { echo "aとbは同じです。"; } else { echo "aはbよりも小さいです。"; } ?> |
出力結果
aはbよりも大きいです。
($a > $b)がtrueと判断し、ifの括弧内の処理が実行されました、
次は変数aの値と変数bの値を同じにして処理を行ってみます。
if…else-if…elseの例2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?php $a = 30; $b = 30; if ($a > $b) { echo "aはbよりも大きいです。"; } else if ($a == $b) { echo "aとbは同じです。"; } else { echo "aはbよりも小さいです。"; } ?> |
出力結果
aとbは同じです。
($a > $b)がfalseと判断し、else-ifの条件式へ移動しました。
そして、($a == $b)がtrueと判断し、else-ifの括弧内の処理が実行されました。
最後に変数aの値を変数bの値より小さくして処理を行ってみます。
if…else-if…elseの例3
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?php $a = 30; $b = 40; if ($a > $b) { echo "aはbよりも大きいです。"; } else if ($a == $b) { echo "aとbは同じです。"; } else { echo "aはbよりも小さいです。"; } ?> |
出力結果
aはbよりも小さいです。
($a > $b)がfalseと判断し、else-ifの条件式へ移動しました。
そして($a == $b)がfalseと判断し、elseの括弧内の処理が実行されました。
if文のネスト
if文はネストとよばれる多重構造でif文の処理の中にif文を記述することが可能です。
以下のサンプルでは、if文をネストしてaの値を明確にしています。
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
<?php $a = 50; if($a > 0) { echo "aは正の数です。"; if ($a > 100) { echo "aは100より大きいです。"; } else if( $a < 50) { echo "aは50より小さいです。"; } else { echo "aは50と100の間です。"; } } else { echo "aは負の数です。"; if($a < -100) { echo "aは-100より小さいです。"; } else if ($a < -50) { echo "aは-50より小さいです。"; } else { echo "aは-100から-50の間です。"; } } ?> |
出力結果
aは正の数です。aは50と100の間です。
ここまでのネストはまだわかりやすいですが、これがさらに深くなると、
今どこの処理をしているのかすぐに判断しずらくなるので、ネストを深くするのはあまりおすすめしません。
switch文
if文では条件分岐がたくさんある場合はelse-ifが続いてしまい、見にくくなります。
しかし、switch文だと綺麗にかける為、条件分岐がたくさんある場合は、switch文で書く方がおすすめします。
switch文の書き方は以下のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?php switch (条件式) { case 値1: // 処理内容 ; break; case 値2: // 処理内容; break; case 値3: // 処理内容; break; ... } ?> |
条件式の値がcaseの値と一致した場合、そのcaseの処理を行うようになります。
ここでswitch文の例を見てみます。
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
<?php $week = 4; switch ($week) { case 1: echo "日曜日です。"; break; case 2: echo "月曜日です。"; break; case 3: echo "火曜日です。"; break; case 4: echo "水曜日です。"; break; case 5: echo "木曜日です。"; break; case 6: echo "金曜日です。"; break; case 7: echo "土曜日です。"; break; } ?> |
出力結果
水曜日です。
変数weekの値が4である為、4の値と一致するcaseの処理を行います。
ですので今回は「水曜日です。」と出力しています。
このように条件分岐が多くなる場合は、if文で書くよりもswitch文で書くと見やすくなります。
比較演算子
比較演算子とはある値Aとある値Bとを比較し、真偽値を返す演算子となります。
比較演算子は以下のようになります。
演算子 | 使用法 | 説明 |
---|---|---|
== | $値1 == $値2 | $値1が$値2に等しい時にtrueを返します。 |
=== | $値1 === $値2 | $値1が$値2に等しい、および同じ型の場合、trueを返します。 |
!= | $値1 != $値2 | $値1が$値2に等しくない場合、trueを返します。。 |
<> | $値1 <> $値2 | $値1が$値2に等しくない場合、trueを返します。 |
!== | $値1 !== $値2 | $値1が$値2と等しくない、および同じ型でない場合、trueを返します。 |
< | $値1 < $値2 | $値1 が $値2より少ない時、trueを返します。 |
> | $値1 > $値2 | $値1が$値2より多い時、trueを返します。 |
<= | $値1 <= $値2 | $値1が$値2以下である時、trueを返します。 |
>= | $値1 >= $値2 | $値1 が $値2以上である時、trueを返します。 |
比較演算子を使った例
例
1 2 3 4 5 6 7 8 9 10 11 |
<?php $a = 90; $b = 40; if ($a != $b) { echo "aとbは同じ値ではありません。"; } else { echo "aはb同じ値です。"; } ?> |
出力結果
aとbは同じ値ではありません。
変数aは90で変数bは40であり、条件式は($a != $b)である為、trueと判断され、
if文の括弧内の処理が実行されます。
論理演算子
論理演算子とはある値Aとある値Bを論理とともに用いられ真偽値を返す演算子となります。
論理演算子は以下のようになります。
演算子 | 使用法 | 説明 |
---|---|---|
論理積 | $値1 and $値2 | $値1および$値2が共にtrueの場合、trueを返します |
論理和 | $値1 or $値2 | $値1または$値2のどちらかがtrueの場合にtrueを返します。 |
排他的論理和 | $値1 xor $値2 | $値1または$値2のどちらかがtrueでかつ両方ともtrueでない場合、trueを返します。 |
否定 | ! $値1 | $値1がtrueでない場合、trueを返します。 |
論理積 | $値1 && $値2 | $値1および$値2が共にtrueの場合、trueを返します。 | 論理和 | $値1 || $値2 | $値1または$値2のどちらかがtrueの場合、trueを返します。 |
論理演算子を使った例
例
1 2 3 4 5 6 7 8 9 10 11 |
<?php $a = 30; $b = 50; if ($a = 30 || $b = 40) { echo "両方の値、もしくは片方の値はOK。"; } else { echo "両方の値ともNG"; } ?> |
出力結果
両方の値、もしくは片方の値はOK。
変数aは30で変数bは50であり、条件式は($a = 30 || $b = 40)である為、trueと判断され、
if文の括弧内の処理が実行されます。
今回は論理和なのでどちらかの条件を満たしているならtrueと判断されています。
ST
株式会社flyhawkのSTです。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。