# ch04 — 配列の基本関数

Source: https://php-school.pages.dev/topics/array-basic/ch04-array-functions/
Site: AIと学ぶPHPの学校 (https://php-school.pages.dev)
Lesson: 配列の基本
Level: L2

Reference (official): https://www.php.net/manual/ja/language.types.array.php

## 本文

# ch04 — 配列の基本関数

## 概要

配列に対して **「要素数を数える」「合計を出す」「最大値を取る」** という処理は、現場で毎日のように発生する。これを毎回 for ループで書いていると、コードが長くなり、ミスも増える。PHP には配列を扱う **組み込み関数が 200 以上** 用意されていて、よく使うものを覚えておくと数行で済む処理がたくさんある。

この章ではその第一歩として、最頻出の 4 つを身につける。`count($arr)` は要素数を返す。`array_sum($arr)` は数値配列の合計を一発で計算する。`max($arr)` と `min($arr)` は最大値・最小値をそれぞれ返す。どれも引数に配列を渡すだけで動くシンプルな関数で、「使えるかどうか」で書くスピードが変わってくる。

組み込み関数を使う最大のメリットは、**自分で for ループを書くより速くて短く、バグが入りにくい** こと。PHP の組み込み関数は C 言語で書かれていて高速だし、何より「合計を求めたい」という意図がコード上ですぐ読み取れる。次章では同じ処理を **あえて for で組む** ことで「裏で何が起きているか」を理解するが、本番のコードでは積極的に組み込みを使う。これがプロのコードらしさの第一歩になる。

## 学習目標

- `count($arr)` で要素数を取得できる
- `array_sum($arr)` で合計を一発で計算できる
- `max($arr)` `min($arr)` で最大・最小を取得できる

## 所要時間

スライド 5 分 + ドリル 3 問 = **18 分**

## ドリル

| no | 内容 |
|---|---|
| 01 | `count()` で要素数を出力 |
| 02 | `array_sum()` で合計を出力 |
| 03 | `max()` と `min()` を組み合わせて「最大 - 最小」を出力 |

## 採点

```bash
php scripts/grade.php topics/array-basic/ch04-array-functions/drill/01-count/
```

## 関連チャプター

- [`ch01-create-array`](../ch01-create-array/) — 関数に渡す配列を作る (この章の前提)
- [`ch05-for-array`](../ch05-for-array/) — 同じ処理を for で書いて中身を理解する
- [`ch08-array-manipulation`](../ch08-array-manipulation/) — 配列を操作する関数群へ広げる

## スライド

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

<!--
LLM_CONTEXT:
  Lesson 4 / Chapter 4
  目的: count / array_sum / max / min の 4 つの基本関数で集計処理を 1 行で書けるようにする
  扱わない: for で集計する書き方 (ch05) / explode・implode (ch06-07) / 操作系 (ch08)
  読み上げ時間目安: 4 分半〜5 分
-->

# 配列の基本関数

Lesson 4 / Chapter 4

---

## 配列にはよく使う関数がある

```php
<?php
$nums = [10, 20, 30, 40, 50];

echo count($nums) . "\n";       // 5
echo array_sum($nums) . "\n";   // 150
echo max($nums) . "\n";         // 50
echo min($nums) . "\n";         // 10
```

- ループを書かなくても、関数 1 つで「個数」「合計」「最大」「最小」が取れる
- 集計処理を **短く** 書ける

---

## `count($arr)` — 要素数

```php
<?php
$fruits = ["りんご", "みかん", "ぶどう"];
echo count($fruits) . "\n";   // 3
```

- 配列に入っている **要素の数** を返す
- 「ループの回数」や「最後の添字を計算」するときに使う

---

## `array_sum($arr)` — 合計

```php
<?php
$scores = [80, 90, 100];
echo array_sum($scores) . "\n";   // 270
```

- 配列の全要素を **足した結果** を返す
- 中身は数値であることが前提 (文字列だと 0 として扱われる)

---

## `max($arr)` / `min($arr)` — 最大・最小

```php
<?php
$temps = [22, 30, 18, 27];

echo max($temps) . "\n";   // 30
echo min($temps) . "\n";   // 18
```

- `max($arr)` は最大値
- `min($arr)` は最小値
- 2 つを組み合わせれば「最大と最小の差 (レンジ)」も計算できる

```php
echo (max($temps) - min($temps)) . "\n";   // 12
```

---

## 平均 = 合計 ÷ 個数

```php
<?php
$scores = [80, 90, 100];
$avg = array_sum($scores) / count($scores);
echo $avg . "\n";   // 90
```

- `array_sum()` と `count()` を組み合わせれば平均が出る
- 0 で割らないよう、件数が 0 でないことを先に確認することもある

---

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

✅ `count($arr)` で要素数を取れる
✅ `array_sum($arr)` で合計を取れる
✅ `max($arr)` `min($arr)` で最大・最小を取れる
✅ これらを組み合わせて平均や差を計算できる

→ ドリルへ
