/*

  • 回调函数: 指调用函数时 并不是 向函数中传递一个标准的变量作为参数,而是将另一个 函数 作为 参数 传递到 调用 的函数中,这个作为参数的函数就是回调函数;
  • 我的理解:所谓的回调函数就是将函数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);

更多相关文章

  1. 请实例演绎你对回调函数与递归函数的理解?
  2. zy0806
  3. PHP简易计算器&封装函数练习
  4. PHP返回值&参数&变量作用域
  5. 函数的参数、返回值、作用域
  6. 0805 PHP编程作业 条件循环与回调函数
  7. 0804-1. 总结函数的返回值,参数? 2. 匿名函数以及变量作用域问题
  8. php之灭绝秘授函数,变量,师太亲传作用域,返回值
  9. 1.总结函数的返回值,参数? 2. 实例演绎你对课上匿名函数以及变量

随机推荐

  1. 移动端开发新趋势Flutter
  2. Android(安卓)Layout 之TableLayout
  3. 绝对让你理解Android中的Context
  4. 一些 Android(安卓)小知识点的总结
  5. Android(安卓)Handler使用的安全问题
  6. android 最简单的圆角阴影效果
  7. eclipse下android工程目录讲解
  8. 用eclipse编写Android程序时怎样生成apk
  9. Android开源项目--工具库篇
  10. Android地图获取详细街道地址信息 精确定