PHPはWeb開発で最もポピュラーなサーバーサイド言語の一つです。動的なコンテンツ生成に欠かせないのが「条件分岐」です。本記事では、初心者の方向けにそれぞれの概要から基本構文、よく使われるコード例までをステップごとに解説します。実際のサンプルコードを動かしながら、PHPでの処理フローの組み立て方を身につけましょう。


PHPの条件分岐とは?基本概要と使いどころ

条件分岐は、プログラムの流れを制御し、ある条件に応じて処理を切り替える仕組みです。これによりユーザーの状態や入力内容によって異なる結果を返せるため、Webアプリケーションのインタラクティブ性が実現します。

たとえば:

  • ユーザーがログインしているかで表示内容を切り替える
  • フォーム入力のバリデーションでエラーメッセージを出す
  • 商品の在庫状況によって購入ボタンを表示・非表示にする
  • 特定のページだけバナーを表示させる

PHPの条件分岐は、これらの動的な機能を作る上で欠かせない基本技術です。


if文の基本構文とサンプルコード解説

最もシンプルな条件分岐がif文です。ifの条件が真(true)ならば、そのブロック内の処理が実行されます。偽(false)ならスキップされます。

<?php
$user_logged_in = true; // ログイン状態を示すフラグ

if ($user_logged_in) {
    echo "ようこそ、ユーザーさん!"; // 条件が真なら表示
} else {
    echo "ログインしてください。";    // 条件が偽ならこちらを表示
}
?>
  • if (条件) { … }:条件が真のときに実行される処理
  • else { … }:条件が偽のときに実行される処理
  • elseif (別の条件) { … }:条件が複数ある場合に、順番にチェックして実行

elseifの例

<?php
$score = 75;

if ($score >= 90) {
    echo "成績はAです";
} elseif ($score >= 70) {
    echo "成績はBです";
} else {
    echo "成績はC以下です";
}
?>

このように段階的に条件を評価し、最初に真となるものを実行します。

switch文で実現する複雑な条件分岐の書き方

switch文は、同じ変数の値によって複数のケースを分けるのに適しています。caseごとに処理を書き、breakでその処理を終了し、defaultでどの条件にも当てはまらなかった場合の処理を書きます。

<?php
$role = 'editor'; // ユーザー権限を文字列で保持

switch ($role) {
    case 'admin':
        echo "管理者メニューを表示します。";
        break;
    case 'editor':
        echo "記事編集メニューを表示します。";
        break;
    case 'subscriber':
        echo "閲覧専用メニューを表示します。";
        break;
    default:
        echo "権限が不明です。";
        break;
}
?>
  • break;は必ず書き、処理の連鎖を防ぎます。
  • defaultはどのcaseにも該当しなかった場合の処理です。

条件分岐の応用例と注意点

複数条件の組み合わせ

条件は論理演算子を使って組み合わせることができます。主に使う演算子は以下の通りです。

  • &&(AND)…両方の条件が真なら真
  • ||(OR)…どちらかの条件が真なら真
  • !(NOT)…条件の真偽を反転させる

AND(&&)の例

<?php
$age = 20;          // 年齢を表す変数に20を代入
$has_ticket = true; // チケットの所持有無を真偽値で表す変数にtrueを代入(チケットあり)

// 条件分岐:年齢が18歳以上かつチケットを持っている場合に入場可能とする
if ($age >= 18 && $has_ticket) {
    echo "入場可能です";  // 条件を満たす場合の出力
} else {
    echo "入場できません"; // 条件を満たさない場合の出力
}
?>

OR(||)の例

<?php
$is_admin = false;       // 管理者権限の有無を示す変数(false:権限なし)
$is_moderator = true;    // モデレーター権限の有無を示す変数(true:権限あり)

// 条件分岐:管理者またはモデレーターのどちらかの権限がある場合に実行
if ($is_admin || $is_moderator) {
    echo "管理者またはモデレーター権限があります";  // どちらかの権限があれば表示
} else {
    echo "権限がありません";  // 両方とも権限がなければ表示
}
?>

NOT(!)の例

<?php
$is_logged_in = false;  // ログイン状態を示す変数(false:未ログイン)

// 条件分岐:ログインしていない場合($is_logged_inがfalseのとき)に実行
if (!$is_logged_in) {
    echo "ログインしてください";  // 未ログインならこのメッセージを表示
} else {
    echo "ようこそ!";             // ログイン済みなら歓迎メッセージを表示
}
?>

ネストされた条件分岐

条件の中にさらに条件分岐を書くこともできます。

<?php
$score = 85;  // 変数 $score に点数 85 を代入

// まず最初に「60点以上かどうか」を判定
if ($score >= 60) {
    // 60点以上の場合、さらに「90点以上かどうか」を判定
    if ($score >= 90) {
        // 90点以上なら「Excellent」を表示
        echo "Excellent";
    } else {
        // 90点未満(かつ60点以上)なら「Good」を表示
        echo "Good";
    }
} else {
    // 60点未満の場合は「Fail」を表示
    echo "Fail";
}
?>

注意点:型の違いに注意する

PHPは型を自動変換するため、==(等価演算子)と===(厳密比較演算子)の違いに注意が必要です。

<?php
var_dump(0 == false);  // true
var_dump(0 === false); // false
?>

ただし、===は型まで厳密に比較するため、状況によっては意図しない動作になることもあります。特にユーザー入力など柔軟に判定したい場合は、==を使う方が扱いやすいこともあるので、使い分けが重要です。

三項演算子(条件演算子)で簡潔に条件分岐を書く

三項演算子は、if-else文の簡易版とも言える書き方で、1行で条件による値の切り替えができます。式の中に使いやすく、コードをシンプルにしたいときに便利です。

基本構文

(条件) ? (条件が真のときの値) : (条件が偽のときの値);

サンプルコード

<?php
$user_logged_in = true;

// 通常のif-else文
if ($user_logged_in) {
    $message = "ようこそ、ユーザーさん!";
} else {
    $message = "ログインしてください。";
}
echo $message;

// 三項演算子を使うと
$message = $user_logged_in ? "ようこそ、ユーザーさん!" : "ログインしてください。";
echo $message;
?>

三項演算子は特に変数への代入時に役立ち、コードを短く書けるため読みやすくなります。

三項演算子のネスト

複数の条件を扱いたい場合、三項演算子を入れ子(ネスト)にできますが、読みやすさを考慮して使いすぎには注意しましょう。

<?php
$score = 75;

$result = ($score >= 90) ? "成績はAです" :
          (($score >= 70) ? "成績はBです" : "成績はC以下です");

echo $result;
?>

三項演算子のメリット・デメリット

  • メリット
    • 短くシンプルに書ける
    • 式の中に書けるので変数代入や関数呼び出しの引数に使いやすい
  • デメリット
    • 複雑な条件をネストすると読みにくくなる
    • 複雑な処理を三項演算子で書くのは避け、if-else文を使う方が安全

三項演算子は日常的に使われるPHPの便利な書き方の一つです。ぜひ使いどころを見極めて、スマートなコードを心がけてください。

まとめ

PHPの条件分岐は、プログラムの流れを制御する基本技術であり、動的なWebサイトやWebアプリケーション開発で欠かせません。if文やswitch文を使いこなし、複雑な条件も整理して書けるようになると、より高度な処理が実装可能になります。

まずは本記事のサンプルコードを試して、実際に動作を確認しながら理解を深めてください。