回调函数
//命名函数作为回调函数
function sum($n){ //数组求和
$result = 0;
for($i = 0;$i<count($n);$i++) $result += $n[$i];
return $result;
}
function printArr($arr,$callback){ //打印数组中每一项的值,并利用回调函数求和
foreach($arr as $value) echo $value.'<br>';
return $callback($arr);
}
echo '求和结果为:'. printArr([1,89,34],'sum');
ob_clean();
//匿名函数作为回调函数
$sum = function ($n){ //数组求和
$result = 0;
for($i = 0;$i<count($n);$i++) $result += $n[$i];
return $result;
} ;
echo '求和结果为:'. printArr([1,89,34],$sum);
在网络请求或执行复杂业务逻辑时,需要耗费大量的时间,有可能会造成线程阻塞,影响代码的执行效率,就需要用使用系统提供的call_user_func()或者call_user_func_array()来执行回调
- call_user_func(‘callback’,’参数1’,’参数2’,…);
- call_user_func_array(‘callback’,[‘参数1’,’参数2’]);
递归函数
//求3-100之间的正整数之和
$count = 0;
function compSum($n1,$n2){
global $count;
if($n1 <= $n2 ){
$count += $n1;
compSum(++$n1,$n2);
}
return $count;
}
echo '3到100之和:'.compSum(1,100);
//递归的思维还有待提升,很容易把人绕晕,我这个递归的demo有点太牵强