加入收藏 | 设为首页 | 会员中心 | 我要投稿 我爱制作网_潮州站长网 (http://www.0768zz.com/)- 物联安全、建站、操作系统、云计算、数据迁移!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP回调函数如何使用

发布时间:2022-07-11 13:24:09 所属栏目:PHP教程 来源:互联网
导读:PHP回调函数 回调函数,一种可以配合匿名函数和变量函数而实现更多功能的函数结构。 什么是回调函数? PHP中所讲的回调函数,其实就是指调用函数时不是向函数中传递标准的变量作为参数,而是将另一个函数作为参数,传递到调用的函数中,回调函数也就是这个作
  PHP回调函数
  回调函数,一种可以配合匿名函数和变量函数而实现更多功能的函数结构。
 
  什么是回调函数?
 
  PHP中所讲的回调函数,其实就是指调用函数时不是向函数中传递标准的变量作为参数,而是将另一个函数作为参数,传递到调用的函数中,回调函数也就是这个作为参数的函数。
 
  可以理解为,回调函数也是我们定义的一个函数,但是它并不是直接调用的,而是需要另一个函数来调用。
 
  示例如下:
 
  
 
 
  <?php
 
      function arithmetic($a, $b, $c) {
 
          return $a($b, $c);
 
      }
 
      function add($b,$c){
 
          return $b+$c;
 
      }
 
      $d = arithmetic('add', 5, 9);
 
      echo '5 + 9 ='.$d;
 
  ?>
 
  输出结果:
 
  1015.11.png
 
  另外,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('add', 3, 4);
 
      echo '3 + 4 ='.$sum;
 
  ?>
 
  输出结果:
 
  1015.12.png
 
  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('add', 250, 250);
 
      echo '250 + 250 ='.$sum;
 
  ?>
 
  输出结果:
 
  1015.13.png
 
  接下来给大家分享一下变量函数和回调函数结合的一个示例:
 
  
  <?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,'plusx2');
 
  //将plusx2改成jian试试结果
 
  echo woziji(20,10,'jian');
 
  ?>

(编辑:我爱制作网_潮州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读