PHP基礎：制御構造の理解と使い方

本記事は、独学エンジニアという学習サイトで学んだPHPの制御構造について、自分用にまとめた備忘録です。
制御構造はプログラムの動きをコントロールする重要な仕組みであり、これを理解することでより柔軟で読みやすいコードを書くことができます。

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

---

## **1. 制御構造とは？**

制御構造とは、**プログラムの流れを制御する仕組み**のことです。基本的に、プログラムは上から下へ順に実行されますが、制御構造を使うことで、プログラムの実行順序を変更したり、条件に応じて処理を分岐させたり、繰り返し処理を実行させることができます。

- **条件分岐**:
    - プログラムの処理を条件によって分岐させるもの。
    - 例: `if` 文、`else` 文、`switch` 文。
- **繰り返し処理**:
    - 同じ処理を複数回繰り返し実行するもの。
    - 例: `for` 文、`while` 文、`foreach` 文。

---

## **2. 制御構造を正確に理解するための基礎知識**

制御構造を深く理解するためには、次の概念を順に理解する必要があります。

### **(1) 式（Expression）**

- **式**とは、**値を持つもの全て**を指します。
- 例:
    
    ```php
    $num = 1; // "1" は値を持つ式
    $sum = $num + 2; // "$num + 2" も値を持つ式
    
    ```
    
- 式は値を返すため、代入演算子（`=`）の右側に記述できます。
- **例: 値を持つ式**:
    
    ```php
    $result = ($num = 1); // $num = 1 も式なので、$result に代入可能
    
    ```
    

---

### **(2) 文（Statement）**

- **文**とは、PHPコードの命令単位で、**セミコロン（`;`）で終わるもの**や、**中括弧（`{}`）でグループ化されたもの**を指します。
- **文の特徴**:
    - 文は値を返しません。
    - 式のように代入演算子の右側には記述できません。
- **例: 文と式の違い**:
    
    ```php
    $num = 1; // これは文（セミコロンで終了）
    $sum = ($num = 1); // これは式（値を返す）
    
    ```
    
- 文は、複数の命令を中括弧 `{}` でグループ化することも可能です。

---

### **(3) 構文（Syntax）**

- **構文**とは、コードの文法や書き方のルールを指します。
- 例: `if` 文の構文
    
    ```php
    if (式) {
        文;
    }
    
    ```
    
- 構文に従わない書き方をすると、**構文エラー（Syntax Error）** になります。
- **例: 構文エラーの例**
    
    ```php
    if $num = 1 { echo "エラー"; } // 構文が間違っているためエラー
    
    ```
    

---

### **(4) 言語構造（Language Constructs）**

- **言語構造**とは、PHPのプログラムを構成する基本的な要素です。
- 例: `if`、`while`、`for` など。
- 言語構造はPHPがあらかじめ用意しているもので、関数のように動作しますが厳密には異なります。
- PHPの公式ドキュメントには、言語構造のリストが記載されています。

---

### **(5) 制御構造（Control Structures）**

- **制御構造**とは、言語構造の一部で、**プログラムの流れを制御するための仕組み**です。
- 制御構造には以下があります：
    - **条件分岐**:
        - 例: `if` 文、`else` 文、`switch` 文。
    - **繰り返し処理**:
        - 例: `for` 文、`while` 文、`foreach` 文。

---

## **3. 制御構造の一覧**

PHPの公式ドキュメントには、制御構造の一覧が記載されています。以下は主なものです：

### **(1) 条件分岐**

- **`if` 文**:
    
    ```php
    if ($num > 0) {
        echo "正の数です";
    }
    
    ```
    
- **`else` 文**:
    
    ```php
    if ($num > 0) {
        echo "正の数です";
    } else {
        echo "負の数またはゼロです";
    }
    
    ```
    
- **`switch` 文**:
    
    ```php
    switch ($num) {
        case 1:
            echo "1です";
            break;
        case 2:
            echo "2です";
            break;
        default:
            echo "その他の数値です";
    }
    
    ```
    

---

### **(2) 繰り返し処理**

- **`for` 文**:
    
    ```php
    for ($i = 0; $i < 5; $i++) {
        echo $i;
    }
    
    ```
    
- **`while` 文**:
    
    ```php
    $i = 0;
    while ($i < 5) {
        echo $i;
        $i++;
    }
    
    ```
    
- **`foreach` 文**:
    
    ```php
    $array = [1, 2, 3];
    foreach ($array as $value) {
        echo $value;
    }
    
    ```
    

---

## **4. 制御構造を理解するメリット**

1. **プログラムを柔軟に制御できる**
    - 条件分岐や繰り返し処理を使うことで、動的な処理を記述可能。
2. **読みやすいコードを書ける**
    - 制御構造を正しく使うことで、コードがシンプルで読みやすくなる。
3. **公式ドキュメントが理解しやすくなる**
    - 制御構造の概念を理解することで、PHPの公式ドキュメントを読む際の理解が深まる。

---

## **5. まとめ**

### **制御構造とは**

- プログラムの流れを制御する仕組み。
    - 条件分岐（`if` 文、`switch` 文など）。
    - 繰り返し処理（`for` 文、`while` 文など）。

### **制御構造を理解するための基礎**

1. **式**:
    - 値を持つものすべて。
2. **文**:
    - セミコロンで終わる命令、または中括弧でグループ化されたもの。
3. **構文**:
    - 書き方や文法のルール。
4. **言語構造**:
    - PHPを構成する基本要素（`if`、`for` など）。

---
以上が整理した内容になります。
制御構造はプログラミングの基礎中の基礎ですが、理解することでPHPの公式ドキュメントの読解や実践的な開発に役立ちます。
自分用の備忘録としてまとめた内容ですが、学習中の方の参考や振り返りに役立てば幸いです。