Blogger Information
Blog 23
fans 0
comment 0
visits 18930
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
对回调函数和递归函数的理解
手机用户1617360551
Original
940 people have browsed it

一 .回调函数

由于PHP脚本时单线程,即从上到下一步步执行,如果遇到耗时函数就会发生阻塞,这是如果使用回调异步执行,就能提高脚本执行效率;

异步执行,我的理解是,当脚本触发回调时,会分派出一个支线去执行不影响主线的继续执行;

回调函数作为一个参数应用到一个函数中,能够扩展函数功能

  1. <?php
  2. function demo($demo1)
  3. {
  4. for ($i=0; $i < 50; $i++) {
  5. if($demo1($i))//这里声明一个变量函数,调用一个自定义功能
  6. continue;
  7. echo $i.'<br>';
  8. }
  9. }
  10. function demo1($num){
  11. return $num % 2 == 0 ;
  12. }
  13. function demo2($num){
  14. return $num % 5 == 0;
  15. }
  16. //demo('demo1');
  17. demo('demo2');//使用一个函数作为另一个函数的实参,扩展了函数功能

系统内置回调函数

  1. <?php
  2. function demo($name)
  3. {
  4. echo "hello,".$name;
  5. }
  6. //demo('灭绝老师');//传统调用
  7. call_user_func('demo','朱老师');//回调函数
  8. echo '<hr>';
  9. function demo1($name,$do)
  10. {
  11. echo $name . '今天教我们'. $do;
  12. }
  13. //demo1('灭绝老师','回调函数');// 传统调用
  14. call_user_func_array('demo1',['灭绝老师','递归函数']);//数组回调

二.递归函数

递归函数是函数自己调用自己的一种类型,应用于无限级列表,树形菜单等操作,递归函数通过设置一个条件,弄够达到依次进入,依次出来的效果;

  1. <?php
  2. function demo($num)
  3. {
  4. $num++;
  5. echo $num;
  6. echo $num;
  7. }
  8. demo(2);//这是一个简单将一个参数加一函数

下边用自己调用自己,并设置条件,达到依次加再依次减的效果

  1. <?php
  2. function demo($num)
  3. {
  4. $num++;
  5. echo $num;
  6. //这里必须设置一个条件,否则就会无限调用自己,进入一个无限循环
  7. if($num<8)//设置一个条件,当不满足条件时,调用自己
  8. {
  9. demo($num);//调用自己
  10. }else{
  11. echo '**';
  12. }
  13. echo $num;
  14. }
  15. demo(2);//开始运行

输出结果为: 345678**876543

由于脚本时由上往下依次执行的,所以出现这种先依次递加,然后不满足条件以后,再一层一层退出.

这是目前我对回调函数和递归函数的理解,有错误和不足的地方,希望老师指导!!!!!!

Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:线程,效率等可暂不考虑, 目前写对, 才是第一位
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post