普通の関数
function triple($n) {
return $n * 3;
}
$numbers = [1, 2, 3];
$result = array_map('triple', $numbers);array_map は
「配列の 1つ1つ に関数を適用する」
[1,2,3] → [3,6,9]
無名関数(名前のない関数)
$result = array_map(function($n) {
return $n * 3;
}, $numbers);function($n) { ... }← これ自体が「関数」- 関数名がないだけ
- 「triple という名前をわざわざ作らなくていい」
function triple($n)
array_map(
「この場で作った処理」,
$numbers
);1回しか使わないときなど、名前つけない方がラクなため
アロー関数(無名関数の省略形)
$result = array_map(fn($n) => $n * 3, $numbers);これは、②の短縮版 で、
returnは書かない(1行だけ){}いらない- 中身は 式1つだけ
function($n) {
return $n * 3;
}省略すると↓
fn($n) => $n * 33つの書き方を比較
// 普通の関数
function triple($n) {
return $n * 3;
}
// 無名関数
function($n) {
return $n * 3;
}
// アロー関数
fn($n) => $n * 3;なぜ混乱するか
array_map('triple', $numbers);
array_map(fn($n) => $n * 3, $numbers);
'triple'もfn($n) => $n * 3も
「処理そのもの」を渡している
アロー関数が向いてるとき
- 1行で終わる処理
- 処理内容がパッと見てわかる
array_map(fn($n) => $n * 3, $numbers);普通の無名関数が向いてるとき
array_map(function ($n) {
if ($n % 2 === 0) {
return $n * 2;
}
return $n;
}, $numbers);- 処理が複数行
- 条件分岐がある

