概要
関数は配列も自由に受け取れるし、配列を戻り値として返すこともできる。function total(array $arr): int { ... } のように array 型を付けて宣言すれば、複数の値をひとまとめにして渡せるようになり、合計・平均・抽出・変換のような「コレクションに対するひとかたまりの処理」を関数として独立させられる。引数が 1 個でも中身は 100 件あって構わないので、「いくつ並んでもいい」性質を持つ入力には配列引数が向いている。
PHP では配列を関数に渡しても 値渡し で挙動するのが基本だ (オブジェクトと違って関数内の変更が外に伝わらない)。配列の各要素を 2 倍にするような変換系の関数は、新しい配列を作って return で返すパターンで書く。これは小さなパイプラインの土台になり、「フィルタ → 変換 → 集計」のような流れを 3 つの関数の組み合わせで表現できるようになる。
このチャプターはあくまで「自分で書く」ことを目的にしているが、PHP には同じ用途で使える array_sum / array_map / array_filter といった組み込み関数も豊富にある。まず手書きで合計・倍化・抽出を書いて動きを掴んでから、後の章で組み込み関数に置き換える流れを意識しておくと、「自前で書ける」と「ライブラリで一発」の両方を選べる引き出しが揃う。
学習目標
- 配列を引数として関数に渡せる
array型を付けて宣言できる- 関数の中で配列を変換して
returnで返せる
ドリル
| no | 内容 |
|---|---|
| 01 | total(array $arr): int で合計を返す |
| 02 | 配列の各要素を 2 倍にして返す |
| 03 | 配列から正の数だけ抽出して返す |
📝 演習: ドリル 01 — total(array $arr): int で合計を返す
問題
配列 $arr を引数に取り、要素の合計を return で返す関数 total を、型宣言付きで定義してください。
- 引数
$arrの型はarray - 戻り値の型は
int
定義した後、次の 3 件の戻り値を 1 行ずつ出力してください。
total([1, 2, 3, 4, 5])total([10, 20, 30])total([7])
期待される出力:
15
60
7ヒント
function total(array $arr): int { ... }- 中で
$sum = 0;を用意しforeach ($arr as $v) { $sum += $v; } - 最後に
return $sum;
📝 演習: ドリル 02 — 配列の各要素を 2 倍にして返す
問題
配列 $arr を引数に取り、各要素を 2 倍にした 新しい配列 を return で返す関数 doubled を定義してください。
- 引数
$arrの型はarray - 戻り値の型は
array
定義した後、doubled([1, 2, 3, 4, 5]) の戻り値を 1 要素 1 行で出力してください。
期待される出力:
2
4
6
8
10ヒント
function doubled(array $arr): array { ... }- 中で
$result = [];を用意しforeach ($arr as $v) { $result[] = $v * 2; } - 最後に
return $result; - 呼び出し側で
foreach (doubled([1, 2, 3, 4, 5]) as $v) { echo $v . "\n"; }
📝 演習: ドリル 03 — 配列から正の数だけ抽出する
問題
配列 $arr を引数に取り、0 より大きい要素だけを集めた 新しい配列 を return で返す関数 positives を定義してください。
- 引数
$arrの型はarray - 戻り値の型は
array 0は正の数に 含めない (> 0で判定)
定義した後、positives([-3, -1, 0, 2, -5, 4, 7]) の戻り値を 1 要素 1 行で出力してください。
期待される出力:
2
4
7ヒント
function positives(array $arr): array { ... }- 中で
$result = [];を用意しforeach ($arr as $v) { if ($v > 0) { $result[] = $v; } } - 最後に
return $result; - 呼び出し側で
foreach (positives([...]) as $v) { echo $v . "\n"; }