PHPの組み込み関数におけるコールバック
PHPには、パラメータとしてコールバックを受け取る組み込み関数がいくつかあります。
その一般的な使い方を、関数 array_map を例に学びましょう。
この関数は、最初のパラメータとしてコールバックを、
2番目のパラメータとして配列を受け取ります。
この関数は、配列の各要素にコールバックを適用し、
変更された配列を返します。
これまでに学んだ知識を踏まえて、 この関数の使用例を見てみましょう。
方法 1
組み込み関数
sqrt を使って、
配列の各要素から平方根を抽出しましょう。
そのために、コールバックのパラメータとして
この関数の名前を文字列で渡します。
<?php
$arr = [1, 2, 3, 4, 5];
$res = array_map('sqrt', $arr);
var_dump($res);
?>
方法 2
作成した通常の関数を使って、 配列の各要素を2乗しましょう。 そのために、コールバックのパラメータとして この関数の名前を文字列で渡します。
<?php
$arr = [1, 2, 3, 4, 5];
function func($num) {
return $num ** 2;
}
$res = array_map('func', $arr);
var_dump($res);
?>
方法 3
関数を変数に格納された匿名関数に書き換えましょう。
<?php
$arr = [1, 2, 3, 4, 5];
$func = function ($num) {
return $num ** 2;
};
$res = array_map($func, $arr);
var_dump($res);
?>
方法 4
匿名関数をパラメータとして直接渡しましょう。
<?php
$arr = [1, 2, 3, 4, 5];
$res = array_map(function ($num) {
return $num ** 2;
}, $arr);
var_dump($res);
?>
方法 5
アロー関数を使いましょう。
<?php
$arr = [1, 2, 3, 4, 5];
$res = array_map(fn ($num) => $num ** 2, $arr);
var_dump($res);
?>
方法 6
今度は、数値をべき乗する指数を、
コールバックの外部変数で指定するとしましょう。
use を使ってこの変数にアクセスしましょう。
<?php
$arr = [1, 2, 3, 4, 5];
$pow = 3;
$res = array_map(function ($num) use ($pow) {
return $num ** $pow;
}, $arr);
var_dump($res);
?>
方法 7
前のコードをアロー関数で書き直しましょう。
これで、変数 $pow に自動的にアクセスできるようになります。
<?php
$arr = [1, 2, 3, 4, 5];
$pow = 3;
$res = array_map(fn ($num) => $num ** $pow, $arr);
var_dump($res);
?>
練習問題
文字列の配列が与えられます。 配列の各要素のテキストを大文字に変換してください。
文字列の配列が与えられます。 配列の各要素のテキストを、 文字が逆の順序になるように反転させてください。