【PHP】if文で条件分岐をする!書き方や使い方を分かり易く解説!

条件分岐はPHPだけでなく、他の言語でも最も重要な機能の一つです。

サーバー側(Java,PHP,C#等)のプログラミングとは、if文等の条件分岐の集まりといっても過言ではありません。
そのくらい重要な役割を占めていますので、しっかり学びましょう!

ここでは、初心者にも分かり易くPHPのif文の書き方、使い方を解説していきます。

if文(条件分岐)とは

条件分岐とはある条件によって処理が分岐することです。

例えば、トイレには男子トイレと女子トイレがあります。
しかし、そこではある条件によってどちらのトイレに行くかが決まります。
その条件とは性別です。性別が男性なら男子トイレ、女性なら女子トイレにいきます。

このように、ある条件によって違う処理を行う(行動をする)ことを条件分岐といいます。
プログラムの条件分岐はブール値によって評価されます。
条件式trueである場合、PHPが実行されますが、falseだった場合、その処理を無視するようになります。

if文の書き方

if文の書き方は以下のようになります。

if文の基本的なサンプルコード

if文の基本的なサンプルコードを見てみましょう。
次のサンプルコードでは、if文を使ってお互いの変数を比べた結果を表示するコードになっています。

if文の例1

出力結果

aはbよりも大きいです。処理を終了します。

変数aの値は変数bの値よりも大きい為、条件式ではtrueと判断されます。
その為、if文の下に書かれてある処理が実行されます。
次の例2では変数aの値を変数bの値よりも小さくして実行してみます。

if文の例2

出力結果

処理を終了します。

変数aの値は変数bの値よりも小さい為、条件式ではfalseと判断されます。
ですので、ifの下に書かれている処理はスルーされてしまいます。

if文の使い方

コードを作成するときは、さまざまな条件に対してさまざまなアクションを実行する必要があります。
これを行うには、コードで条件文を使用できます。
PHPでは、次の条件文があります。

if文: 1つの条件が真の場合にコードを実行します
if-else文: 条件が真の場合はいくつかのコードを実行し、条件が偽の場合は別のコードを実行します
if…else-if…else文: 3つ以上の条件に対して異なるコードを実行します

if…elseの使い方

if…elseは条件式がtrueだった場合とfalseだった場合
と別々の処理を行うことができます。
if…elseは以下のように書きます。

条件式に対してtrueだった場合は、ifの括弧内の処理を行い、
falseだった場合は、elseの括弧内の処理を実行できます。

if…elseを使った次の例を見てみましょう。

if…elseの例1

出力結果

aはbよりも大きいです。

変数aの値は変数bの値よりも大きいので条件式はtrueと判断され、ifの括弧内の処理が実行されています。
しかし、ここで変数aの値は変数bの値を入れ替えて実行してみましょう。

if…elseの例2

出力結果

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を判断します。そして、条件式1がtrueだった場合はifの括弧内にある処理を実行し、
falseだった場合は、else-ifの条件式2判断します。
条件式2がtrueだった場合はelse-ifの括弧内にある処理を実行し、
falseだった場合は、elseの括弧内の処理を実行します。

if…else-if…elseを使った次の例を見てみましょう。
まずは、変数aの値を変数bの値より大きくして処理を行ってみます。

if…else-if…elseの例1

出力結果

aはbよりも大きいです。

($a > $b)がtrueと判断し、ifの括弧内の処理が実行されました、
次は変数aの値と変数bの値を同じにして処理を行ってみます。

if…else-if…elseの例2

出力結果

aとbは同じです。

($a > $b)がfalseと判断し、else-ifの条件式へ移動しました。
そして、($a == $b)がtrueと判断し、else-ifの括弧内の処理が実行されました。
最後に変数aの値を変数bの値より小さくして処理を行ってみます。

if…else-if…elseの例3

出力結果

aはbよりも小さいです。

($a > $b)がfalseと判断し、else-ifの条件式へ移動しました。
そして($a == $b)がfalseと判断し、elseの括弧内の処理が実行されました。

if文のネスト

if文はネストとよばれる多重構造でif文の処理の中にif文を記述することが可能です。
以下のサンプルでは、if文をネストしてaの値を明確にしています。

出力結果

aは正の数です。aは50と100の間です。

ここまでのネストはまだわかりやすいですが、これがさらに深くなると、
今どこの処理をしているのかすぐに判断しずらくなるので、ネストを深くするのはあまりおすすめしません。

switch文

if文では条件分岐がたくさんある場合はelse-ifが続いてしまい、見にくくなります。
しかし、switch文だと綺麗にかける為、条件分岐がたくさんある場合は、switch文で書く方がおすすめします。

switch文の書き方は以下のようになります。

条件式の値がcaseの値と一致した場合、そのcaseの処理を行うようになります。
ここでswitch文の例を見てみます。

出力結果

水曜日です。

変数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を返します。

比較演算子を使った例

出力結果

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を返します。

論理演算子を使った例

出力結果

両方の値、もしくは片方の値はOK。

変数aは30で変数bは50であり、条件式は($a = 30 || $b = 40)である為、trueと判断され、
if文の括弧内の処理が実行されます。
今回は論理和なのでどちらかの条件を満たしているならtrueと判断されています。

Writer
壷井

壷井

株式会社flyhawkの壷井です。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。

最新の案件情報

フリーランスエンジニアの案件探し