PHPの組み込み関数におけるコールバック

PHPには、パラメータとしてコールバックを受け取る組み込み関数がいくつかあります。 その一般的な使い方を、関数 array_map を例に学びましょう。 この関数は、最初のパラメータとしてコールバックを、 2番目のパラメータとして配列を受け取ります。 この関数は、配列の各要素にコールバックを適用し、 変更された配列を返します。

これまでに学んだ知識を踏まえて、 この関数の使用例を見てみましょう。

方法 1

組み込み関数 sqrt を使って、 配列の各要素から平方根を抽出しましょう。 そのために、コールバックのパラメータとして この関数の名前を文字列で渡します。

php<?php
  $arr = [1, 2, 3, 4, 5];
  
  $res = array_map('sqrt', $arr);
  var_dump($res);
?>

方法 2

作成した通常の関数を使って、 配列の各要素を2乗しましょう。 そのために、コールバックのパラメータとして この関数の名前を文字列で渡します。

php<?php
  $arr = [1, 2, 3, 4, 5];
  
  function func($num) {
    return $num ** 2;
  }

  $res = array_map('func', $arr);
  var_dump($res);
?>

方法 3

関数を変数に格納された匿名関数に書き換えましょう。

php<?php
  $arr = [1, 2, 3, 4, 5];
  
  $func = function ($num) {
    return $num ** 2;
  };

  $res = array_map($func, $arr);
  var_dump($res);
?>

方法 4

匿名関数をパラメータとして直接渡しましょう。

php<?php
  $arr = [1, 2, 3, 4, 5];
  
  $res = array_map(function ($num) {
    return $num ** 2;
  }, $arr);
  
  var_dump($res);
?>

方法 5

アロー関数を使いましょう。

php<?php
  $arr = [1, 2, 3, 4, 5];
  
  $res = array_map(fn ($num) => $num ** 2, $arr);
  var_dump($res);
?>

方法 6

今度は、数値をべき乗する指数を、 コールバックの外部変数で指定するとしましょう。 use を使ってこの変数にアクセスしましょう。

php<?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<?php
  $arr = [1, 2, 3, 4, 5];
  $pow = 3;
  
  $res = array_map(fn ($num) => $num ** $pow, $arr);
  var_dump($res);
?>

練習問題

Задание 1

文字列の配列が与えられます。 配列の各要素のテキストを大文字に変換してください。

Задание 2

文字列の配列が与えられます。 配列の各要素のテキストを、 文字が逆の順序になるように反転させてください。