PHPでプログラミングを行う際、特定の条件に応じて処理を切り替える「条件分岐」は、アプリケーションの論理構造を形作る最も重要な要素の一つです。
その中でも、if文は条件分岐の基本であり、ユーザーの入力内容やデータベースの値に合わせてプログラムの挙動を制御するために欠かせません。
本記事では、PHPのif文の基本的な書き方から、より実践的で効率的なコードの記述方法までを詳しくご紹介します。
初心者の方でも理解しやすいように、具体的なコード例を交えながら一歩ずつ進めていきましょう。
PHPのif文とは?条件分岐の役割
if文とは、英語の「もしも(if)」という意味の通り、「もし〜ならば、この処理を実行する」というロジックを実現するための構文です。
例えば、ユーザーがログインしている場合には「マイページ」を表示し、そうでない場合には「ログイン画面」を表示するといった制御が可能になります。
プログラムの実行フローを柔軟に変更できるため、動的なWebサイトを構築する上での基盤となります。
if文の基本構造と書き方
PHPにおけるif文の最もシンプルな書き方は、ifキーワードの後に括弧で条件式を記述し、その後の波括弧内に実行したい処理を書く形です。
<?php
$score = 85;
// もし $score が 80 以上であれば、合格と表示する
if ($score >= 80) {
echo "合格です!おめでとうございます。";
}
?>
合格です!おめでとうございます。
条件式の結果が真(true)である場合にのみ、波括弧内の処理が実行されます。
もし条件式が偽(false)であれば、波括弧内の処理は無視され、プログラムは次の行へと進みます。
比較演算子の種類と使い方
条件式を作成する際には、値を比較するための「比較演算子」を正しく理解しておく必要があります。
PHPでよく使われる比較演算子を以下の表にまとめました。
| 演算子 | 意味 | 例 |
|---|---|---|
== | 等しい(値のみ) | $a == $b |
=== | 等しい(値と型が一致) | $a === $b |
!= | 等しくない | $a != $b |
> | より大きい | $a > $b |
< | より小さい | $a < $b |
>= | 以上 | $a >= $b |
<= | 以下 | $a <= $b |
PHPでは、==と===の違いに注意することが非常に重要です。
==は型を自動的に変換して比較しますが、バグの原因になりやすいため、通常は型まで厳密にチェックする===を使用することを推奨します。
論理演算子による複数条件の組み合わせ
「AかつB」や「AまたはB」のように、複数の条件を組み合わせて判定を行いたい場合には「論理演算子」を使用します。
<?php
$age = 25;
$has_license = true;
// 20歳以上、かつ免許を持っている場合
if ($age >= 20 && $has_license) {
echo "レンタカーの貸出が可能です。";
}
?>
レンタカーの貸出が可能です。
主な論理演算子には以下のものがあります。
&&(AND): すべての条件が真の場合に真||(OR): いずれかの条件が真の場合に真!(NOT): 条件が真なら偽、偽なら真に反転
if-else文とelseif文による分岐の拡張
条件に当てはまらなかった場合の処理を指定するには、elseキーワードを使用します。
<?php
$is_admin = false;
if ($is_admin) {
echo "管理画面へようこそ。";
} else {
echo "一般ユーザー用ページを表示します。";
}
?>
一般ユーザー用ページを表示します。
条件が一致する場合としない場合で、処理を完全に分けることができます。
elseifを使った多方向分岐
3つ以上の分岐を作りたい場合には、elseifを使用することで条件を連結できます。
<?php
$hour = 15;
if ($hour < 12) {
echo "おはようございます。";
} elseif ($hour < 18) {
echo "こんにちは。";
} else {
echo "こんばんは。";
}
?>
こんにちは。
elseifは上から順番に判定が行われ、最初に条件が一致したブロックのみが実行されるという点に注意してください。
実践的なif文の活用シーン
実際の開発現場では、if文はデータのバリデーションやステータスの判定に多用されます。
値の存在チェックと空文字判定
フォームから送信されたデータが空でないかを確認する際、if文は必須です。
<?php
$user_name = "Tech太郎";
if (!empty($user_name)) {
echo "こんにちは、" . $user_name . "さん。";
} else {
echo "名前が入力されていません。";
}
?>
empty()関数をif文と組み合わせることで、変数が存在し、かつ中身が空でないかを効率的に判定できます。
ネストされたif文
if文の中に、さらに別のif文を記述することを「ネスト(入れ子)」と呼びます。
<?php
$is_logged_in = true;
$is_premium = true;
if ($is_logged_in) {
if ($is_premium) {
echo "プレミアム会員限定コンテンツです。";
} else {
echo "一般会員向けコンテンツです。";
}
}
?>
ネストを使用することで複雑な条件を記述できますが、階層が深くなりすぎるとコードの可読性が低下するため注意が必要です。
if文をよりスマートに記述する方法
PHPには、通常のif文以外にも短く記述できる構文が用意されています。
三項演算子の活用
単純な値の代入などであれば、三項演算子を使うことで1行にまとめることができます。
<?php
$age = 18;
$status = ($age >= 18) ? "成人" : "未成年";
echo $status;
?>
成人
(条件) ? 真の場合の値 : 偽の場合の値 という形式で記述します。
null合体演算子
PHP 7以降で導入されたnull合体演算子(??)は、変数が定義されているか、あるいはnullでないかを判定する際に非常に便利です。
<?php
$input = $_GET['user_id'] ?? 'guest';
echo $input;
?>
これは、if文でisset()を使って書くよりも非常にシンプルに記述できるため、2026年現在の開発でも標準的に利用されています。
読みやすい条件分岐を書くためのポイント
プログラムは書く時間よりも、後から読み返す時間の方が長いと言われています。
そのため、誰が見ても理解しやすいif文を書くことが、保守性の高いコードへと繋がります。
ガード節によるネストの回避
条件を満たさない場合に早期に処理を終了させる手法を「ガード節」と呼びます。
<?php
function process($data) {
if (empty($data)) {
return; // 条件に合わない場合はすぐに抜ける
}
// 本来行いたいメインの処理
echo "データを処理します";
}
?>
このように書くことで、メインの処理がif文の中に深く入り込むのを防ぎ、コードがスッキリします。
複雑な条件は変数に切り出す
if文の条件式が長くなりすぎる場合は、一旦結果を変数に代入すると分かりやすくなります。
<?php
$is_weekend = ($day === 'Saturday' || $day === 'Sunday');
$is_holiday = in_array($date, $holiday_list);
if ($is_weekend || $is_holiday) {
echo "本日は休業日です。";
}
?>
条件に名前をつけることで、その判定が何を意味しているのかがひと目で分かるようになります。
まとめ
PHPのif文は、プログラムに論理的な判断をさせるための最も基礎的な構文です。
単純な数値の比較から、複数の条件を組み合わせた複雑な分岐まで、幅広い用途で活用されます。
基本的なif、else、elseifの使い方をマスターしたら、次は三項演算子やガード節を使って、より綺麗で読みやすいコードを目指してみてください。
条件分岐を自在に操ることができれば、PHPでのプログラミングの幅は格段に広がります。
日々のコード作成において、ぜひ本記事で紹介したテクニックを取り入れてみてください。
