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
文を使いこなし、複雑な条件も整理して書けるようになると、より高度な処理が実装可能になります。
まずは本記事のサンプルコードを試して、実際に動作を確認しながら理解を深めてください。