PHP基礎: 繰り返し処理の基本をマスターしよう

このページでは、独学エンジニアという学習サイトで学んだ内容をもとにPHPの繰り返し処理の基礎をまとめています。
自分用の備忘録として作成しているため、ポイントを押さえたシンプルな解説を心がけました。

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

---

## **1. 繰り返し処理とは？**

繰り返し処理は、**同じ処理を複数回実行するための仕組み**です。PHPでは以下の3種類の繰り返し処理が提供されています。

1. **`foreach` 文**: 配列や連想配列の全要素に対して処理を行う。
2. **`for` 文**: 決められた回数分、処理を繰り返す。
3. **`while` 文**: 条件を満たしている間、処理を繰り返す。

これらを適切に使い分けることで、効率的で読みやすいコードを書くことができます。

---

## **2. 各繰り返し処理の特徴と使い方**

### **(1) `foreach` 文**

- **特徴**:
    - 配列や連想配列の全要素に対して処理を実行するのに適している。
    - 配列を1つずつ取り出して処理を行う。
- **基本構文**:
    
    ```php
    foreach ($配列 as $要素) {
        // 繰り返し実行する処理
    }
    
    ```
    
- **連想配列の場合**:
    
    ```php
    foreach ($配列 as $キー => $値) {
        // 繰り返し実行する処理
    }
    
    ```
    
- **例: 配列の値を2倍にして出力**:
    
    ```php
    $numbers = [1, 2, 3, 4];
    
    foreach ($numbers as $number) {
        echo $number * 2 . PHP_EOL; // 2, 4, 6, 8 と出力
    }
    
    ```
    
- **例: 連想配列の出力**:
    
    ```php
    $scores = [
        "田中" => 50,
        "佐藤" => 90,
        "鈴木" => 70,
    ];
    
    foreach ($scores as $name => $score) {
        echo $name . "のスコアは " . $score . " 点です。" . PHP_EOL;
    }
    
    ```
    

---

### **(2) `for` 文**

- **特徴**:
    - **決められた回数**だけ処理を繰り返すのに適している。
    - ループの開始値、終了条件、増減を明確に指定できる。
- **基本構文**:
    
    ```php
    for (初期化式; 継続条件式; 増減式) {
        // 繰り返し実行する処理
    }
    
    ```
    
- **例: 1から10までカウント**:
    
    ```php
    for ($i = 1; $i <= 10; $i++) {
        echo $i . PHP_EOL; // 1, 2, ..., 10 と出力
    }
    
    ```
    
- **例: 配列の全要素にアクセス**:
    
    ```php
    $people = [
        ["name" => "田中", "height" => 170],
        ["name" => "佐藤", "height" => 160],
        ["name" => "鈴木", "height" => 180],
    ];
    
    for ($i = 0; $i < count($people); $i++) {
        echo $people[$i]['name'] . "の身長は " . $people[$i]['height'] . " cmです。" . PHP_EOL;
    }
    
    ```
    
- **注意点**:
    - 継続条件式（例: `$i < count($array)`）を明確にする必要がある。
    - 終了条件を間違えると無限ループになる可能性がある。

---

### **(3) `while` 文**

- **特徴**:
    - **条件を満たしている間**だけ処理を繰り返す。
    - 繰り返し回数が事前に決まっていない場合に適している。
- **基本構文**:
    
    ```php
    while (継続条件式) {
        // 繰り返し実行する処理
    }
    
    ```
    
- **例: 0から100まで10ずつカウント**:
    
    ```php
    $i = 0;
    
    while ($i <= 100) {
        echo $i . PHP_EOL; // 0, 10, 20, ..., 100 と出力
        $i += 10;
    }
    
    ```
    

---

## **3. 共通で使える命令: `break` と `continue`**

### **(1) `break`**

- ループ処理を途中で**完全に中断**し、ループの外に出る。
- **例**:
    
    ```php
    foreach ([1, 2, "a", 4] as $value) {
        if (!is_numeric($value)) {
            echo "数値ではない値が見つかったので終了します。" . PHP_EOL;
            break;
        }
        echo "値: $value" . PHP_EOL;
    }
    
    ```
    

### **(2) `continue`**

- ループ処理の現在の周をスキップし、**次の周に進む**。
- **例**:
    
    ```php
    foreach ([1, 2, 3, 4, 5] as $value) {
        if ($value % 2 === 0) { // 偶数をスキップ
            continue;
        }
        echo "奇数: $value" . PHP_EOL;
    }
    
    ```
    

---

## **4. 波括弧を使わない記法**

PHPでは、HTMLと混在する場合に波括弧を使わない記法を利用することができます。

### **例: if 文の波括弧を省略**

```php
<?php if ($age >= 18): ?>
    <p>成人です。</p>
<?php else: ?>
    <p>未成年です。</p>
<?php endif; ?>

```

### **例: foreach 文の波括弧を省略**

```php
<?php foreach ($items as $item): ?>
    <li><?= $item ?></li>
<?php endforeach; ?>

```

---

## **5. 繰り返し処理の使い分け**

| **構文** | **特徴** | **使いどころ** |
| --- | --- | --- |
| **`foreach`** | 配列や連想配列の全要素に対して処理を実行。 | 配列や連想配列をループ処理したい場合。 |
| **`for`** | 決められた回数だけ繰り返し処理を実行する。 | ループ回数が明確に決まっている場合。 |
| **`while`** | 条件を満たしている間、繰り返し処理を実行する。 | 繰り返し回数が事前に決まっていない場合。 |

---

## **6. 今回のまとめ**

1. **繰り返し処理の種類**:
    - 配列や連想配列: **`foreach` 文**。
    - 回数が決まっている場合: **`for` 文**。
    - 条件を満たしている間実行: **`while` 文**。
2. **共通の命令**:
    - **`break`**: ループを完全に終了。
    - **`continue`**: 現在のループ処理をスキップして次の周へ。
3. **HTMLと混在する場合**:
    - 波括弧を省略した記法（`endforeach`、`endif` など）を使用すると、コードが見やすくなる。

---

整理した内容は以上です。
この記事が独学で学んでいる方の理解を助け、学習の一助になれば幸いです。