一、回调函数

所谓回调函数,就是一个被作为参数传递的函数,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);?>

运行实例 »

点击 "运行实例" 按钮查看在线实例


更多相关文章

  1. 回调函数与递归函数的理解
  2. 完成一个用户注册页面, 用xmind文件中总结的字符串函数库,对表单
  3. 如何使用array_values()函数
  4. 实例演绎对回调函数与递归函数的理解?
  5. zy0810
  6. 函数的返回值和参数,匿名函数和变量的作用域
  7. PHP函数的返回值与参数,匿名函数与变量作用域的总结与实例
  8. 回调与递归
  9. PHP函数的返回值、参数及变量、函数作用域的总结

随机推荐

  1. golang 开源吗
  2. golang判断字符串是否数字的方法
  3. golang数组和切片的区别是什么
  4. golang用什么ide
  5. golang中协程和线程的区别是什么?
  6. golang编程语言能开发啥
  7. golang数据类型有哪些
  8. golang数组与切片的区别是什么?
  9. golang语言可以做些什么
  10. golang如何判断数据类型