PHPを学び始めたばかりの方が、プログラミングにおいて最初にぶつかる大きな壁の一つが「条件分岐」です。
条件分岐とは、「もし~ならば、〇〇する」というプログラムの動作を決定する非常に重要な仕組みを指します。
PHPのWeb開発において、ユーザーがログインしているかどうかや、フォームに入力された値が正しいかどうかを判断するために、if文は欠かせない存在です。
この記事では、現役エンジニアの視点から、PHPのif文の基本的な書き方から、実務で使える応用テクニックまでを分かりやすく解説します。
初心者の方でもコードをコピーして動作を確認できるよう、具体的なサンプルプログラムを豊富に用意しましたので、ぜひ最後まで読み進めてみてください。
PHPのif文とは?条件分岐の基本概念
if文とは、指定した条件が「正しい(真:true)」か「正しくない(偽:false)」かを判定し、その結果に応じて実行する処理を分けるための構文です。
例えば、「現在の時刻が午前中なら『おはようございます』と表示する」といった制御が可能になります。
プログラムの実行フローをコントロールすることを「制御構造」と呼び、if文はその中でも最も頻繁に利用される基本中の基本です。
PHPにおいてif文を正しく使いこなすことは、動的なWebアプリケーションを構築するための第一歩と言えるでしょう。
if文の基本的な書き方
まずは、最もシンプルなif文の構文を確認しましょう。
if文は、ifキーワードの後に丸括弧()で条件を記述し、その後の波括弧{}の中に条件に一致した時の処理を記述します。
<?php
$score = 80;
// もし $score が 70 以上なら
if ($score >= 70) {
echo "合格です!";
}
?>
合格です!
上記のコードでは、変数 $score に代入された数値が70以上であるため、画面に「合格です!」と表示されます。
もし $score が 60 であれば、条件を満たさないため、波括弧の中の処理は無視され、何も表示されません。
PHPでは条件式の末尾にセミコロンは不要
条件に一致しない場合の処理(else)
条件が「偽(false)」だった場合に別の処理を行いたいときは、elseキーワードを使用します。
elseを使うことで、「もしAなら処理1を、そうでなければ処理2を実行する」という2パターンの分岐が可能になります。
<?php
$score = 50;
if ($score >= 70) {
echo "合格です!";
} else {
// 条件を満たさない場合に実行される
echo "不合格です。次は頑張りましょう。";
}
?>
不合格です。次は頑張りましょう。
このように、条件を満たさなかった場合の受け皿として else を配置します。
実務では、エラーメッセージの表示やデフォルト設定の適用などで非常によく使われるパターンです。
複数の条件を組み合わせる(elseif)
「もしAなら処理1、Bなら処理2、どちらでもなければ処理3」といった具合に、3つ以上の分岐を作りたい場合は elseif を使います。
elseif は if と else の間にいくつでも記述することができます。
<?php
$score = 75;
if ($score >= 90) {
echo "大変優秀です!";
} elseif ($score >= 70) {
// 90未満かつ70以上の場合
echo "合格です。";
} else {
echo "不合格です。";
}
?>
合格です。
注意点として、if文は上から順番に判定が行われ、最初に一致したブロックのみが実行されるという性質があります。
そのため、条件を記述する順番は非常に重要です。
もし上記の例で $score >= 70 を先に書いてしまうと、95点だったとしても最初の条件に合致してしまい、「大変優秀です!」というメッセージが表示されなくなってしまいます。
比較演算子の使い方
if文の条件式を作る際に欠かせないのが「比較演算子」です。
値を比較して、その結果が正しいかどうかを判定するための記号です。
| 演算子 | 意味 | 例 |
|---|---|---|
$a == $b | 等しい | $a と $b の値が同じなら真 |
$a === $b | 厳密に等しい | 値もデータ型も同じなら真 |
$a != $b | 等しくない | $a と $b が異なるなら真 |
$a !== $b | 厳密に等しくない | 値か型が異なるなら真 |
$a > $b | より大きい | $a が $b より大きいなら真 |
$a >= $b | 以上 | $a が $b 以上なら真 |
特に初心者の方が間違いやすいのが、代入演算子の = と比較演算子の == です。
if ($a = 10) と書くと、判定ではなく代入が行われてしまい、常に真として処理されてしまうため、必ず == または === を使うように徹底しましょう。
また、現代のPHP開発では、予期せぬ挙動を防ぐために型まで厳密にチェックする ===(厳密な比較)の使用が強く推奨されています。
論理演算子で複雑な条件を作る
「AかつB」や「AまたはB」といった、複数の条件を組み合わせて判定したい場合には「論理演算子」を使用します。
実務では一つの条件だけで判断することは少なく、複数のステータスをチェックする場合が多いです。
<?php
$age = 25;
$has_ticket = true;
// 18歳以上、かつチケットを持っている場合
if ($age >= 18 && $has_ticket === true) {
echo "入場可能です。";
} else {
echo "入場できません。";
}
// 週末、または祝日の場合
$is_weekend = true;
$is_holiday = false;
if ($is_weekend || $is_holiday) {
echo "本日は休業日です。";
}
?>
主要な論理演算子は以下の通りです。
&&(かつ/AND):すべての条件が真であれば真||(または/OR):いずれかの条件が真であれば真!(否定/NOT):条件が偽であれば真(真偽を反転)
論理演算子を組み合わせることで、より高度なビジネスロジックをプログラムに落とし込むことができます。
三項演算子を使った短い書き方
if文による単純な変数への代入などであれば、「三項演算子」を使うことでコードを簡潔に記述できます。
構文は 条件 ? 真の場合の値 : 偽の場合の値; となります。
<?php
$age = 20;
// if文を使った場合
if ($age >= 20) {
$status = "大人";
} else {
$status = "子供";
}
// 三項演算子を使った場合
$status = ($age >= 20) ? "大人" : "子供";
echo $status;
?>
三項演算子は非常に便利ですが、条件が複雑になりすぎるとコードの可読性(読みやすさ)が低下します。
一目で内容が理解できる単純な分岐の場合のみ使用し、複雑な場合は通常のif文を使用するのがエンジニアとしてのマナーです。
現場で意識すべき!if文をきれいに書くコツ
コードは「動けば良い」というわけではなく、後から自分や他人が読んだときに理解しやすいことが重要です。
ここでは、現役エンジニアが意識している「綺麗なif文」の書き方を少しだけ紹介します。
1. ネスト(入れ子)を深くしない
if文の中にさらにif文を書くことを「ネスト」と呼びますが、これが深くなるとコードの構造が把握しづらくなります。
条件を整理したり、早期リターン(条件に合わない場合は先に処理を終了させる手法)を使うことで、ネストを浅く保つことができます。
2. 肯定文を優先する
if (!$is_active)(もしアクティブでないなら)よりも、if ($is_active)(もしアクティブなら)の方が、直感的に理解しやすいコードになります。
否定の条件が必要な場面以外は、できるだけ肯定的な条件式を立てるようにしましょう。
3. マジックナンバーを避ける
if ($user_type === 1) と書かれていても、1 が何を指すのか分かりません。
このような「マジックナンバー」は避け、変数や定数に名前を付けて管理するのがベストプラクティスです。
まとめ
PHPのif文は、プログラムに「判断力」を与えるための非常に強力なツールです。
基本的な if, else, elseif の使い方を理解し、比較演算子や論理演算子を組み合わせることで、あらゆる複雑な条件に対応できるようになります。
最後にお伝えした「読みやすいコードを書くコツ」も意識しながら、ぜひ自分の手で様々な条件分岐を書いて試してみてください。
条件分岐をマスターすれば、PHPでのプログラミングがより一層楽しく、自由度の高いものになるはずです。
もし書き方に迷ったら、まずは一番シンプルな構成に戻って考えてみることをおすすめします。
