Blogger Information
Blog 11
fans 0
comment 1
visits 15484
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP:0806回调函数和递归函数的理解
州爱殇
Original
634 people have browsed it

```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);

```

Correction status:Uncorrected

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post