首頁  >  文章  >  後端開發  >  PHP回呼函數怎麼使用(實例詳解)

PHP回呼函數怎麼使用(實例詳解)

WBOY
WBOY原創
2021-10-15 14:36:384787瀏覽

在先前的文章中為大家帶來了《如何玩轉PHP自訂函數(總結分享)》,這篇文章中詳細的介紹了PHP中的自訂函數,本篇文章來看看PHP函數中基本的回呼函數。希望對大家有幫助!

PHP回呼函數怎麼使用(實例詳解)

PHP回呼函數

#回呼函數,一種可以配合匿名函數與變數函數而實作更多功能的函數結構。

什麼是回呼函數?

PHP中所講的回呼函數,其實就是指呼叫函數時不是向函數中傳遞標準的變數作為參數,而是將另一個函數當作參數,傳遞到呼叫的函數中,回調函數也就是這個作為參數的函數。

可以理解為,回呼函數也是我們定義的函數,但是它並不是直接呼叫的,而是需要另一個函數來呼叫。

範例如下:

<?php
    function arithmetic($a, $b, $c) {
        return $a($b, $c);
    }
    function add($b,$c){
        return $b+$c;
    }
    $d = arithmetic(&#39;add&#39;, 5, 9);
    echo &#39;5 + 9 =&#39;.$d;
?>

輸出結果:

PHP回呼函數怎麼使用(實例詳解)

#另外,PHP 提供了兩個函數call_user_func()call_user_func_array() 來支援回呼函數。

這兩個函數的差異是: call_user_func_array() 是以陣列的形式接收回呼函數的參數,而 call_user_func() 則是以具體的參數來接收回調函數參數的。

  • call_user_func_array() 

call_user_func_array 函數可以呼叫回呼函數,然後使用一個陣列來作為回呼函數的參數。語法格式如下:

call_user_func_array ($callback ,$param_arr)

在語法格式中,$callback 是被呼叫的回呼函數,$param_arr 是一個索引數組,下面舉個例子實際看一下:

<?php
    function arithmetic($f, $m, $n) {
        return call_user_func_array($f, array($m, $n));
    }
    function add($m,$n){
        return $m+$n;
    }
    $sum = arithmetic(&#39;add&#39;, 3, 4);
    echo &#39;3 + 4 =&#39;.$sum;
?>

輸出結果:

PHP回呼函數怎麼使用(實例詳解)

  • call_user_func() 

##call_user_func 函數會把第一個參數作為回呼函數來調用,語法格式如下:

call_user_func ($callback [, $parameter, ... ])

其中, $callback 是被調用的回調函數,其餘參數是回調函數的參數,多個參數之間使用"

, "分隔。下面舉例實際看一下:

<?php
    function arithmetic($f, $m, $n) {
        return call_user_func($f, $m, $n);
    }
    function add($m,$n){
        return $m+$n;
    }
    $sum = arithmetic(&#39;add&#39;, 250, 250);
    echo &#39;250 + 250 =&#39;.$sum;
?>

輸出結果:


PHP回呼函數怎麼使用(實例詳解)

#接下來要跟大家分享變數函數和回呼函數結合的一個範例:

<?php
function woziji($one,$two,$func){
       //我规定:检查$func是否是函数,如果不是函数停止执行本段代码,返回false
       if(!is_callable($func)){
               return false;
       }
       //我把$one、$two相加,再把$one和$two传入$func这个函数中处理一次
       //$func是一个变量函数,参见变量函数这一章
       echo $one + $two + $func($one,$two);
}
//我们定义几个函数试试
function plusx2( $foo , $bar){
       $result = ($foo+$bar)*2;
       return $result;
}
function jian( $x , $y ){
   $result = $x - $y;
   return $result;
}
//调用一下函数,woziji,向里面传入参数试试
echo woziji(20,10,&#39;plusx2&#39;);
//将plusx2改成jian试试结果
echo woziji(20,10,&#39;jian&#39;);
?>

輸出結果:


PHP回呼函數怎麼使用(實例詳解)

#推薦學習:《

PHP影片教學

以上是PHP回呼函數怎麼使用(實例詳解)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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