博客列表 >PHP:0806回调函数和递归函数的理解

PHP:0806回调函数和递归函数的理解

州爱殇
州爱殇原创
2021年08月07日 18:37:35633浏览

```php

/*

  • 回调函数: 指调用函数时  并不是  向函数中传递一个标准的变量作为参数,而是将另一个 函数 作为 参数  传递到  调用  的函数中,这个作为参数的函数就是回调函数;

  • 我的理解:所谓的回调函数就是将函数1当做参数在函数2中调用,函数1就被叫做  回调函数.  回调函数并不是指一个固定的函数,而是指被当作参数传递的函数,就是回调函数.

  • 而回调函数经常使用的情形是和PHP内置的的函数call_user_func和call_user_func_array配合使用

  • */

/*1.自定义函数add()作为回调函数求和,
   自定义函数sub()作为回调函数求乘积

使用注意:回调函数调用时,是使用函数名作为”字符串名”来调用的,而不是使用函数名称调用.
/
function arith($funcName,$m,$n ){
   return $funcName($m,$n);
}
//求和的回调函数
function add($m,$n){
   return $m+$n;
}
$sum =arith(‘add’,3,5);
echo “3+5=”.$sum;
//求乘积的回调函数
function sub($m,$n){
   return $m
$n;
}
$sum =arith(‘sub’,3,5);
echo “35=”.$sum;
/

  • 2.使用内置函数 call_user_func() ,调用回调函数

  • */
    echo “<hr>“;
    //function two($funcDev,$m,$n){
    //    return call_user_func($funcDev,$m,$n);
    //}
    function arithmetic($funcName, $m, $n) {
    return call_user_func($funcName, $m, $n);
    }
    function add($m,$n){
    return $m+$n;
    }
    $sum = arithmetic(‘add’, 7, 17);
    echo ‘7 + 17 =’.$sum;

function arithmetic2($funcName, $m, $n) {
   return call_user_func($funcName, $m, $n);
}
function dev($m,$n){
   return $m / $n;
}
//echo $res2=arithmetic2(dev(8,2));       //错误示例,注意调用时是函数名对应的字符串
/ call_user_func(“这个位置第一个调用的是回调函数的名字”,$回调函数的参数,$回调函数的参数)
/
echo $res2=arithmetic2(‘dev’,8,2);

//  以上回调的错误目前无法排除
function test($name){
   return ‘nihao’.$name;
}

echo calluser_func(‘test’,’张三’);
//call_user_func

echo “<hr>“;
print_r(‘call_user_func_array数组传值调用:’.call_user_func_array(‘dev’,array(8,4)));

//递归函数:
//自调用函数,也就是函数在函数体内部直接或间接地自己调用自己。需要注意的是使用递归函数时通常会在函数体中附加一个判断条件,以判断是否需要继续执行递归调用,当条件满足时会终止函数的递归调用。
//用递归函数求数的阶乘

function factorial($n){
   if ($n == 1){
     return 1;
   }
   else{
       return  $n * factorial($n-1);
   }
}

echo factorial(4);

```

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议