在 PHP 陣列中儲存函數
問題是是否可以在 PHP 陣列中儲存函數。例如,考慮以下內容:
$functions = [ 'function1' => function($echo) { echo $echo; } ];
這是可行的方法嗎?如果沒有,推薦的替代方案是什麼?
建議方法:匿名函數
在陣列中儲存函數的首選方法是使用匿名函數。與上面的範例一樣,它們可以內聯定義:
$functions = [ 'function1' => fn($echo) => $echo ];
引用外部函數
處理預先聲明的函數時,您可以按名稱引用它們strings :
<code class="php">function do_echo($echo) { echo $echo; } $functions = [ 'function1' => 'do_echo' ];</code>
舊方法(PHP 5.3): create_function
對於不支援:<code class="php">$functions = [ 'function1' => create_function('$echo', 'echo $echo;') ];</code>
呼叫儲存函數
無論使用什麼方法儲存函數,都可以直接呼叫(PHP >= 5.4)或透過call_user_func/call_user_func_array.<code class="php">$functions['function1']('Hello world!'); call_user_func($functions['function1'], 'Hello world!');</code>
總之,匿名函數是在PHP 陣列中儲存函數的建議方法,字串引用用於預先宣告的函數,而create_function 可用於舊版PHP 版本。
以上是如何有效地將函數儲存在 PHP 數組中?的詳細內容。更多資訊請關注PHP中文網其他相關文章!