PHP 条件分岐
条件文(ステートメント)は、プログラムが指定された条件が真(true)か偽(false)かに基づいて意思決定を行うための仕組みです。これらのステートメントは PHP スクリプトの実行フロー(Control Flow)を制御する基礎であり、特定の基準を満たしたときにのみ異なるコードブロックを実行させることで、プログラムに「状況に応じた振る舞い」をさせることが可能になります。
1. if 文
if 文は最も基本的なコントロール構造(制御構造)です。指定された条件が true(真)の場合にのみ、その内部のコードブロックを実行します。条件が false(偽)の場合は、そのコードブロックは完全にスキップされます。
if 文の構文は以下の通りです。
if (条件) {
// 条件が真 (true) の場合に実行されるコード
}括弧内の「条件」には、通常、比較演算子(==, !=, <, >, <=, >=)やロジカル演算子(&&, ||, !)を使用します。これらは最終的にブーリアン値(true または false)として評価されます。
1.1 基本的な if 文の例
ユーザーの年齢をチェックし、特定のコンテンツにアクセスするための法定年齢に達しているかどうかを判断するシナリオを考えてみましょう。
<?php
$userAge = 20; // ユーザーの入力やデータベースからの値を想定
if ($userAge >= 18) {
echo "条件を満たしています。コンテンツを表示します。"; // この行が実行されます
}
echo "<br>";
$anotherUserAge = 16;
if ($anotherUserAge >= 18) {
echo "条件を満たしています。コンテンツを表示します。"; // この行は実行されません(スキップされます)
}
echo "検証が完了しました。"; // 条件に関わらず、この行は常に実行されます
?>最初の例では、$userAge が 20 であり、18 以上であるため、条件 $userAge >= 18 は true となります。その結果、「条件を満たしています。コンテンツを表示します。」が表示されます。
二番目の例では、$anotherUserAge が 16 であり、18 以上ではないため、条件は false となります。if ブロック内部のメッセージはスキップされます。
1.2 ロジカル演算子を組み合わせた if 文
ロジカル演算子を使用することで、複数の条件を組み合わせてより複雑なチェックロジックを作成できます。
<?php
$isLoggedIn = true;
$userRole = "admin";
// ユーザーがログイン済み、かつ (AND) ロールが 'admin'(管理者)であるかチェック
if ($isLoggedIn && $userRole == "admin") {
echo "ようこそ、管理者様!すべてのアクセス権限が付与されています。";
}
echo "<br>";
$isPaidMember = false;
$hasPremiumFeature = true;
// ユーザーが有料会員、または (OR) プレミアム特典を保持しているかチェック
if ($isPaidMember || $hasPremiumFeature) {
echo "プレミアムコンテンツへのアクセス権限が付与されました。";
}
?>最初の if 文では、$isLoggedIn と $userRole == "admin" の両方が true である場合にのみ、内部のコードが実行されます。
二番目の例では、$isPaidMember または $hasPremiumFeature のどちらか一方が true であれば、コードブロックが実行されます。
2. else 文
else 文は、if の条件が false と評価された場合に実行される代替のコードブロックを提供します。これにより、2つのコードブロックのうち、必ずどちらか一方が実行されることが保証されます。
if...else 文の構文は以下の通りです。
if (条件) {
// 条件が真 (true) の場合に実行されるコード
} else {
// 条件が偽 (false) の場合に実行されるコード
}2.1 if...else の例
先ほどの年齢検証の例を拡張して、年齢制限に達していないユーザーに対してエラーメッセージを表示するようにします。
<?php
$userAge = 16;
if ($userAge >= 18) {
echo "条件を満たしています。コンテンツを表示します。";
} else {
echo "このコンテンツを閲覧するには 18 歳以上である必要があります。"; // この行が実行されます
}
echo "<br>";
$currentWeather = "sunny"; // 晴れ
if ($currentWeather == "rainy") { // 雨
echo "傘を忘れないでください!";
} else {
echo "素晴らしい天気を楽しんでください!"; // この行が実行されます
}
?>最初の例では、$userAge が 16 のため if の条件が false となり、else ブロックが実行されます。
二番目の例では、$currentWeather が "sunny" であるため if 条件が成立せず、else ブロックが実行されます。
3. elseif 文 (または else if)
elseif(または else if も PHP では同等です)を使用すると、複数の条件を順番にテストできます。
最初の if 条件が偽の場合、PHP は次に続く elseif 条件をチェックします。それが偽であればさらに次の elseif をチェックし、という流れで進みます。すべての if および elseif 条件が真でない場合、最後に記述された(任意設定の)else ブロックが実行されます。
実行ルール: elseif ステートメントは、その直前にあるすべての if または elseif 条件が false である場合にのみ実行されます。いずれかの条件が true と評価されると、対応するコードブロックが実行され、残りの elseif や else ブロックはすべてスキップされます。
if...elseif...else の完全な構文は以下の通りです。
if (condition1) {
// condition1 が真 (true) の場合に実行されるコード
} elseif (condition2) {
// condition1 が偽で、かつ condition2 が真の場合に実行されるコード
} elseif (condition3) {
// 前のすべての条件が偽で、かつ condition3 が真の場合に実行されるコード
} else {
// 上記のすべての条件が偽 (false) の場合に実行されるコード
}