PHP基礎：条件分岐の基礎まとめ

プログラミングの基礎である条件分岐について、独学エンジニアという学習サイトで学んだ内容をもとに、自分用の備忘録としてまとめました。
PHPでよく使われるif文、switch文、そしてPHP 8.0から導入されたmatch式の特徴や使いどころを解説します。

https://dokugaku-engineer.com/course/serverside

---

## **1. 条件分岐とは？**

条件分岐は、**特定の条件に応じてプログラムの処理を分岐させる**仕組みです。プログラミングの基礎中の基礎であり、PHPでも頻繁に使用されます。

---

## **2. PHPの条件分岐の種類**

PHPには以下の3種類の条件分岐があります。それぞれの特徴と使い方を解説します。

### **(1) if 文**

- 最も基本的な条件分岐の方法。
- **書き方（構文）**:
    
    ```php
    if (条件式) {
        // 条件式がTRUEの場合に実行される処理
    } elseif (別の条件式) {
        // 別の条件式がTRUEの場合に実行される処理
    } else {
        // 上記の条件がすべてFALSEの場合に実行される処理
    }
    
    ```
    
- **特徴**:
    - 条件が複数ある場合は `elseif` を追加。
    - すべての条件がFALSEの場合は `else` を使用。
- **例**:
    
    ```php
    $score = 85;
    
    if ($score >= 90) {
        echo "優秀です";
    } elseif ($score >= 70) {
        echo "合格です";
    } else {
        echo "不合格です";
    }
    
    ```
    

---

### **(2) switch 文**

- **同じ変数**に対して、複数の値で条件分岐を行いたい場合に適した方法。
- **書き方（構文）**:
    
    ```php
    switch (式) {
        case 値1:
            // 値1の場合に実行される処理
            break;
        case 値2:
            // 値2の場合に実行される処理
            break;
        default:
            // どのケースにも当てはまらない場合の処理
    }
    
    ```
    
- **特徴**:
    - 条件に合致した場合に `break` を記述しないと、後続の処理も実行される（フォールスルー）。
    - `default` はどの条件にも当てはまらない場合の処理。
- **例**: 都道府県による地域分け
    
    ```php
    $prefecture = "大阪";
    
    switch ($prefecture) {
        case "東京":
            echo "関東地方";
            break;
        case "大阪":
        case "京都":
            echo "関西地方";
            break;
        default:
            echo "その他の地域";
    }
    
    ```
    

---

### **(3) match 式**

- PHP 8.0 から登場した新しい条件分岐の方法。
- **複数の条件分岐を行い、その結果を** **変数に代入** **したい場合に適している**。
- **書き方（構文）**:
    
    ```php
    $変数 = match (式) {
        条件1 => 値1,
        条件2 => 値2,
        default => デフォルト値,
    };
    
    ```
    
- **特徴**:
    - `switch` 文と似ているが、**式**であるため値を返す。
    - *厳密な比較（型変換なし）**を行う。
    - `default` は省略可能。
- **例**:
    
    ```php
    $prefecture = "大阪";
    
    $area = match ($prefecture) {
        "東京" => "関東地方",
        "大阪", "京都" => "関西地方",
        default => "その他の地域",
    };
    
    echo $area; // 結果: 関西地方
    
    ```
    

---

## **3. 条件分岐の使い分け**

### **(1) if 文**

- **使いどころ**:
    - 条件が複雑で、論理演算（`&&`, `||`）などを伴う場合。
    - 条件の組み合わせやパターンが多岐にわたる場合。
- **例**:
    
    ```php
    if ($age >= 18 && $age <= 25) {
        echo "対象年齢です";
    }
    
    ```
    

---

### **(2) switch 文**

- **使いどころ**:
    - **同じ変数**に対して複数の値で条件分岐したい場合。
    - 見やすく簡潔に記述できる場合。
- **例**:
    
    ```php
    $day = "土曜日";
    
    switch ($day) {
        case "土曜日":
        case "日曜日":
            echo "週末です";
            break;
        default:
            echo "平日です";
    }
    
    ```
    

---

### **(3) match 式**

- **使いどころ**:
    - 条件分岐の結果を**変数に代入したい場合**。
    - 厳密な比較が必要な場合。
- **例**:
    
    ```php
    $grade = "B";
    
    $evaluation = match ($grade) {
        "A" => "優秀",
        "B" => "良い",
        "C" => "合格",
        default => "不合格",
    };
    
    echo $evaluation; // 結果: 良い
    
    ```
    

---

## **4. 条件分岐の注意点**

1. **`switch` 文の型変換に注意**
    - `switch` 文では緩やかな比較が行われるため、型変換が発生することがあります。
    - 厳密な比較が必要な場合は、`match` 式を使用。
2. **`break` の記述漏れ**
    - `switch` 文で `break` を忘れると、後続の処理が実行されてしまう（フォールスルー）。
3. **読みやすさを重視**
    - 条件が複雑になる場合は、コードの可読性を意識して適切な構文を選ぶ。

---

## **5. まとめ**

### **条件分岐の種類と使いどころ**

| **構文** | **特徴** | **使いどころ** |
| --- | --- | --- |
| **if 文** | 一般的な条件分岐。複数の条件や複雑な論理演算を扱える。 | 条件が複雑な場合や論理演算を伴う場合。 |
| **switch 文** | 同じ変数を複数の値で条件分岐。緩やかな比較を行う。 | 同じ変数を複数の値で分岐したい場合。 |
| **match 式** | 条件分岐の結果を変数に代入できる。厳密な比較を行う（PHP 8.0以降）。 | 条件分岐の結果を変数に代入したい場合や厳密な比較が必要な場合。 |

### **条件分岐を使いこなすポイント**

1. **if 文**を基本とし、状況に応じて**switch 文**や**match 式**を使い分ける。
2. **読みやすいコードを意識**し、条件が増えすぎる場合はリファクタリングを検討。
3. **公式ドキュメントを参照**しながら、構文や挙動を正確に理解する。

---
整理した内容は以上です。
条件分岐はPHPに限らず、すべてのプログラミングで欠かせない基本スキルです。
今回まとめた内容が、学習中の皆さんの理解の助けとなり、実践的なコード作成に役立てば幸いです。