# ch01 — if 単独

Source: https://php-school.pages.dev/topics/conditional/ch01-if/
Site: AIと学ぶPHPの学校 (https://php-school.pages.dev)
Lesson: 条件分岐
Level: L2

Reference (official): https://www.php.net/manual/ja/language.control-structures.php

## 本文

# ch01 — if 単独

## 概要

プログラムは「常に同じ処理」だけでは現実の要件に追いつかない。年齢で表示を変える、点数で合否を分ける、入力が空かどうかで処理を切り替える — こうした「**条件によって動きを変えたい**」というのが、ほぼあらゆる業務ロジックに登場する根本的な要求で、その最も基本的な道具が `if` 文だ。

PHP の `if` は `if (条件) { ... }` という形で書く。波括弧 `{}` の中に書いたコードは、**条件が真のときだけ** 実行される。条件部分には比較演算子を使った式 (`$age >= 18` など) を書くのが一般的だが、PHP は「真偽値に評価できるものなら何でも」条件にできる柔軟さがある。

ここで知っておくべき重要なクセが、PHP の **falsy (偽として扱われる値) の範囲が広い** こと。`false` だけでなく、`0` / `"0"` / `""` (空文字) / `null` / `[]` (空配列) すべてが if の条件として書くと「偽」になる。これは便利な反面、「`$count = 0` のときに `if ($count)` が想定と逆に動く」というハマり方をしやすい。この章ではまず素直な「真のときだけ実行」を体に入れ、後の `ch03-comparison` で比較式の評価を、`ch04-logical` で複合条件を扱えるようにする。

## 学習目標

- `if (条件) { ... }` の書き方を言える
- 条件が真のときだけブロックの中身が実行されると理解する
- 条件式に比較演算子を使える

## 所要時間

スライド 4 分 + ドリル 3 問 = **15 分**

## ドリル

| no | 内容 |
|---|---|
| 01 | 入力が正の数なら「正の数」と出力 |
| 02 | 入力点数が 60 以上なら「合格」と出力 |
| 03 | 入力時刻が 12 未満なら「午前」と出力 |

## 採点

```bash
php scripts/grade.php topics/conditional/ch01-if/drill/01-positive-number/
```

## 関連チャプター

- [`ch02-if-else`](../ch02-if-else/) — `else` で「真でなかったとき」も扱えるようにする次の章
- [`ch03-comparison`](../ch03-comparison/) — `if` の条件に使う比較演算子の詳細
- [`ch04-logical`](../ch04-logical/) — `&&` `||` で複合条件を組み立てる

## スライド

---
marp: true
theme: dojo
paginate: true
size: 16:9
---

<!--
LLM_CONTEXT:
  Lesson 2 / Chapter 1
  目的: if (条件) { ... } で条件に応じて処理を実行できるようにする
  扱わない: else / elseif (ch02) / 比較演算子の詳細 (ch03) / 論理演算子 (後続章)
  読み上げ時間目安: 4 分
-->

# if 単独

Lesson 2 / Chapter 1

---

## `if` は「もし〜なら」

```php
<?php
$score = 80;

if ($score >= 60) {
    echo "合格\n";
}
```

- `if (条件)` のあとに `{ ... }` を書く
- 条件が **真 (true)** のときだけ `{ ... }` の中身が実行される
- 条件が **偽 (false)** のときは中身を飛ばす

---

## 書き方のルール

```php
if ($score >= 60) {
    echo "合格\n";
}
```

- 条件は `(` `)` で囲む
- 処理は `{` `}` で囲む
- 中の行は **半角スペース 4 つ** インデントする
- `}` のあとに `;` は **付けない**

---

## 条件式には比較演算子を使う

```php
<?php
$n = 5;

if ($n > 0) {
    echo "正の数\n";
}
```

- `>` 大なり
- `>=` 以上
- `==` 等しい
- 比較の結果は **真 / 偽** のどちらか
- 比較演算子の詳細は ch03 で扱う

---

## 条件が偽なら何も起きない

```php
<?php
$score = 40;

if ($score >= 60) {
    echo "合格\n";
}

echo "終了\n";
```

実行結果:

```
終了
```

- `40 >= 60` は偽なので `{ ... }` は飛ばす
- `if` の **外** に書いた `echo "終了\n"` は実行される

---

## このチャプターでできるようになること

✅ `if (条件) { ... }` の形を書ける
✅ 条件が真のときだけブロックが実行されると分かる
✅ 比較演算子 (`>`, `>=`, `==`) を条件に書ける

→ ドリルへ
