首頁  >  文章  >  後端開發  >  php函數之回呼函數(二) call_user_func_array() 函數

php函數之回呼函數(二) call_user_func_array() 函數

伊谢尔伦
伊谢尔伦原創
2017-05-12 11:31:262247瀏覽

回呼函數將一個函數作為參數傳遞到呼叫的函數中。如果在函數的格式說明中出現 callback 類型的參數,則該函數就是回呼函數。 雖然可以使用變數函數去宣告自己的回呼函數,但最多的還是透過  call_user_func_array() 函數去實作。上一章節介紹了php回呼函數中的變數函數宣告和應用,使用變數函數將一個使用者自訂的執行過程傳遞到函數中使用,大大增加了使用者對函數功能的擴展,把一段自己定義的功能傳到函數內部使用。本節就實例說明下 call_user_func_array()函數。

函數call_user_func_array() 是PHP 中的內建函數,其實它也是回呼函數,其格式說明如下:

mixed call_user_func_array( callback function, array param_arr)

這個函數有兩個參數:第一個參數因為使用偽類型callback, 所以這個參數需要一個字串,表示要呼叫的函數名;第二個參數則是陣列類型的參數,表示參數列表,依照順訊一次會傳遞給要呼叫的函數。宣告一個函數,功能是輸出,目的是作為函數的回呼函數。

該函數的應用實例如下所示:

<?php
 // 声明一个函数fun(),功能是输出两个字符串,目的是作为call_user_func_array()函数的回调函数
 function fun($str1, $str2){
   echo "$str1 = ".$str1;
   echo "<br>";
   echo "$str2 = ".$str2;
 }
 //通过系统函数call_user_func_array()调用函数fun()
 call_user_func_array("fun",array("php.cn","php中文网"));
?>

#在在上面的實例中,透過系統函數call_user_func_array () 呼叫自己定義的函數fun(),將函數fun() 的名稱字串傳遞給了call_user_func_array() 函數中的第一個參數,第二個參數則需要的是一個數組,數組中的元素個數必須和  fun()函數的參數列表和樹相同。因為這個陣列參數中的每個元素值都會經過 call_user_func_array() 函數 ,依照順序依序傳遞給回調到的函數  fun()參數清單中。所以我們可以將前面透過變數函數實現的自訂回呼函數,改成借助 call_user_func_array() 函數的方式實作。

其程式碼的範例如下:

<?php
 //声明回调函数filter, 在0-10的整数中通过自定义条件过滤不要的数字
 function filter($fun){
   for($i=0; $i<=10; $i++){
     //使用系统函数call_user_func_array(),调用和变量$fun值相同的函数
     if(call_user_func_array($fun,array($i)))
       continue;
     echo $i.&#39;<br>&#39;;
   }
 }
?>

在本例中,自訂的函數 filter()內部,將原先的變數函數位置改寫成藉助call_user_func_array() 函數的呼叫方式,而函數 filter()的應用方式則沒有改變。

這一章講解了php回呼函數的call_user_func_array()函數及其用法,下一章我們將介紹php回呼函數的類別靜態函數和物件的方法回呼。

【相關教學推薦】

1. 《php.cn獨孤九賤(4)-php影片教學

2 .  php程式設計從入門到精通全套視訊教學

3.  php實戰影片教學

########

以上是php函數之回呼函數(二) call_user_func_array() 函數的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn