一 .回调函数
由于PHP脚本时单线程,即从上到下一步步执行,如果遇到耗时函数就会发生阻塞,这是如果使用回调异步执行,就能提高脚本执行效率;
异步执行,我的理解是,当脚本触发回调时,会分派出一个支线去执行不影响主线的继续执行;
回调函数作为一个参数应用到一个函数中,能够扩展函数功能
<?php
function demo($demo1)
{
for ($i=0; $i < 50; $i++) {
if($demo1($i))//这里声明一个变量函数,调用一个自定义功能
continue;
echo $i.'<br>';
}
}
function demo1($num){
return $num % 2 == 0 ;
}
function demo2($num){
return $num % 5 == 0;
}
//demo('demo1');
demo('demo2');//使用一个函数作为另一个函数的实参,扩展了函数功能
系统内置回调函数
<?php
function demo($name)
{
echo "hello,".$name;
}
//demo('灭绝老师');//传统调用
call_user_func('demo','朱老师');//回调函数
echo '<hr>';
function demo1($name,$do)
{
echo $name . '今天教我们'. $do;
}
//demo1('灭绝老师','回调函数');// 传统调用
call_user_func_array('demo1',['灭绝老师','递归函数']);//数组回调
二.递归函数
递归函数是函数自己调用自己的一种类型,应用于无限级列表,树形菜单等操作,递归函数通过设置一个条件,弄够达到依次进入,依次出来的效果;
<?php
function demo($num)
{
$num++;
echo $num;
echo $num;
}
demo(2);//这是一个简单将一个参数加一函数
下边用自己调用自己,并设置条件,达到依次加再依次减的效果
<?php
function demo($num)
{
$num++;
echo $num;
//这里必须设置一个条件,否则就会无限调用自己,进入一个无限循环
if($num<8)//设置一个条件,当不满足条件时,调用自己
{
demo($num);//调用自己
}else{
echo '**';
}
echo $num;
}
demo(2);//开始运行
输出结果为: 345678**876543
由于脚本时由上往下依次执行的,所以出现这种先依次递加,然后不满足条件以后,再一层一层退出.
这是目前我对回调函数和递归函数的理解,有错误和不足的地方,希望老师指导!!!!!!