PHP 回撥函式
回撥函式
回撥函式(通常簡稱為“回撥”)是一個作為引數傳遞給另一個函式的函式。
任何現有函式都可以用作回撥函式。要使用一個函式作為回撥函式,請將包含函式名的字串作為另一個函式的引數傳遞。
示例
將回調函式傳遞給 PHP 的 array_map()
函式,以計算陣列中每個字串的長度。
<?php
function my_callback($item) {
return strlen($item);
}
$strings = ["apple", "orange", "banana", "coconut"];
$lengths = array_map("my_callback", $strings);
print_r($lengths);
?>
自己動手試一試 »
從 7.0 版本開始,PHP 可以將匿名函式作為回撥函式傳遞
示例
將匿名函式用作 PHP 的 array_map()
函式的回撥函式
<?php
$strings = ["apple", "orange", "banana", "coconut"];
$lengths = array_map( function($item) { return strlen($item); } , $strings);
print_r($lengths);
?>
自己動手試一試 »
使用者定義函式中的回撥
使用者定義的函式和方法也可以接受回撥函式作為引數。要在使用者定義的函式或方法中使用回撥函式,請透過在變數後新增括號並像普通函式一樣傳遞引數來呼叫它
示例
從使用者定義的函式中執行回撥
<?php
function exclaim($str) {
return $str . "! ";
}
function ask($str) {
return $str . "? ";
}
function printFormatted($str, $format) {
// 呼叫 $format 回撥函式
echo $format($str);
}
// 將 "exclaim" 和 "ask" 作為回撥函式傳遞給 printFormatted()
printFormatted("Hello world", "exclaim");
printFormatted("Hello world", "ask");
?>
自己動手試一試 »