回调函数与递归函数实例总结
16lz
2021-08-11
一、回调函数
所谓回调函数,就是一个被作为参数传递的函数,php回调函数是指在主线程执行的过程中,突然跳去执行设置的回调函数,回调函数执行结束后,在回到主线程处理下面的流程。
实例
<?php//声明一个匿名函数里面有$a,$b两个形参$func=function($a,$b){//返回$a+$breturn$a+$b;//匿名函数后面别忘了;};//声明一个函数test,里面两个形参,Closure代表匿名函数类,callback的中文意思回调函数,这里的$callback是个形参,代表了那个函数,这俩在一块应该是代表回调一个匿名函数类,作用是可以回调一个匿名函数functiontest(Closure$callback){//定义两个局部变量$a,$b$a=10;$b=20;//输出把两个值赋给回调函数后的结果echo$callback($a,$b);}//调用test函数并将$func这个匿名函数作为实参传入test($func);
运行实例 »
点击 "运行实例" 按钮查看在线实例
二、递归函数
所谓递归函数,就函数自身调用自身,但是这里需要在函数开始调用之前做判断,否则会陷入死循环,以清理缓存目录为例(注意清理缓存目录的文件,一定不要跟缓存目录在一起,否则会把清理文件也处理掉,且最开始的父级目录在文件被清除后将无法执行清楚命令):
实例
<?php//定义一个清空缓存的函数functiondel($dir){//判断当前文件夹是否是一个正确的文件夹(即判断是否是一个合法的目录)if(is_dir($dir)){//定义一个初始值,默认未被删除$flag=false;//opendir()成功返回resource,失败返回false,上面判断是一个合法目录,这里打开目录流并赋值给一个变量,方便后面关闭if($handle=opendir($dir)){//开始循环读取opendir返回的resource,readdir()从目录句柄中读取条目,成功则返回下一个文件的文件名。文件名以在文件系统中的排序返回。失败返回false//判断不为false时进入循环while(($file=readdir($handle))!==false){//echo"$file<hr>";//输出的时候除了文件跟文件夹的列表,还能看到.跟..,一个点代表存在同级目录,两个点代表存在上级目录if($file!='.'&&$file!='..'){//这里可能又有文件夹,判断当前文件夹是否是一个正确的文件夹,这里跟最开始的路径拼接if(is_dir($dir.'\\'.$file)){//调用本函数,递归处理文件夹(处理目录)del($dir.'\\'.$file);}else{//处理文件这里还是$dir.'\\'.$file,这里判断了他非目录那他就是一个文件,文件就用unlink()函数直接删除unlink($dir.'\\'.$file);}}}}//关闭目录句柄closedir($handle);//目录只有为空才能被程序删除rmdir()删除空文件夹if(rmdir($dir)){//处理后将最开始定义的初始值赋值为true,代表已经删除$flag=true;}}}//当前路径,建议使用绝对路径,我这边是使用__DIR__魔术常量定位到当前的绝对路径,然后往上找到同级的0807文件夹下,调用的0807文件夹$path=__DIR__.'\\..\\0807';//调用函数之前可以先看看路径是否正确echo$path;//执行函数del($path);?>
运行实例 »
点击 "运行实例" 按钮查看在线实例
更多相关文章
- 回调函数与递归函数的理解
- 完成一个用户注册页面, 用xmind文件中总结的字符串函数库,对表单
- 如何使用array_values()函数
- 实例演绎对回调函数与递归函数的理解?
- zy0810
- 函数的返回值和参数,匿名函数和变量的作用域
- PHP函数的返回值与参数,匿名函数与变量作用域的总结与实例
- 回调与递归
- PHP函数的返回值、参数及变量、函数作用域的总结