1. ホーム
  2. php

PHPの配列に関数を格納することはできますか?

2023-11-26 16:43:28

質問

$functions = array(
  'function1' => function($echo) { echo $echo; }
);

これは可能ですか?最良の選択肢は何でしょうか?

どのように解決するのですか?

推奨される方法は 匿名関数 :

$functions = [
  'function1' => function ($echo) {
        echo $echo;
   }
];

すでに宣言されている関数を格納したい場合は、単に文字列の名前で参照することができます。

function do_echo($echo) {
    echo $echo;
}

$functions = [
  'function1' => 'do_echo'
];

古いバージョンの PHP (<5.3) では、匿名関数はサポートされていません。 create_function (PHP 7.2以降非推奨)を使用する必要があるかもしれません。

$functions = array(
  'function1' => create_function('$echo', 'echo $echo;')
);

これらのメソッドはすべて、ドキュメントに記載されている callable 擬似型 .

どちらを選んでも、この関数は直接呼び出すか (PHP ≥5.4) あるいは call_user_func / call_user_func_array :

$functions['function1']('Hello world!');

call_user_func($functions['function1'], 'Hello world!');