详解php递归函数

  • 时间:
  • 1678人关注

这篇文章主要介绍了php递归函数怎么用才有效及php递归函数与非递归函数区别介绍,感兴趣的朋友一起看看吧,另外这篇文章主要知识点是关于php、递归函数、PHP的内容,如果大家想对相关知识点有系统深入的学习,可以参阅以下电子资料:

教程详情电子资料
  • 教程类别:PHP
  • 编辑整理:蓬苏迷
  • 教程字数:2255字节
  • 阅读时间:大概6分钟
  • 下载本教程(DOC版)
  • PHP编程从入门到实践
  • php与java所需jar包
  • PHP7实践指南:O2O网站与App后台开发
  • PHP基础教程(第4版)
  • PHP项目开发全程实录(第4版)
  • 有关php递归函数的用法,分享几个php递归函数的例子,在php编程中,使用递归进行函数调用很常见,递归函数用的好,可以提高代码效率,通过例子学习php递归函数的使用。

    一、什么是递归函数?

    一个函数在它的函数体内调用它自身称为递归调用。 这种函数称为递归函数。

    php递归函数与非递归函数有什么区别?

    例一:使用静态变量

    代码示例:

    function test(){
     static $dig=0;
     if($dig++<10){
      echo $dig;
      test();
     }
    }
    test();//12345678910

    例二:使用递归函数和循环实现字符串逆转排列

    代码示例:

    function unreverse($str){
     for($i=1;$i<=strlen($str);$i++){
      echo substr($str,-$i,1);
     }
    }
    unreverse("abcdefg");//gfedcbc
    function reverse($str){
     if(strlen($str)>0){
      reverse(substr($str,1));
      echo substr($str,0,1);
      return;
     }
    }
    reverse("abcdefg");//gfedcbc

    二、php递归函数使用实例

    php递归使用示例(php递归函数),包括递归获得角色ID字符串、递归获取级联角色信息数组、通过父角色的id获取子角色信息。

    例子:

    代码示例:

    //递归获得角色ID字符串
    function explodeRole($roleObj, &$resultStr){
     if(0 < count($roleObj->childRoleObjArr)){
     foreach($roleObj->childRoleObjArr as $childRoleObj){
      if('' == $resultStr){
      $resultStr .= "{$childRoleObj->id}";
      }else{
      $resultStr .= ", {$childRoleObj->id}";
      }
      explodeRole($childRoleObj, $resultStr);
     }
     }
    }
    //递归获取级联角色信息数组
    function makeRoleRelation(&$roleObjArr){
     foreach($roleObjArr as $item){
     $item->childRoleObjArr = getRoleObjArrByParentId($item->id);
     if(0 < count($item->childRoleObjArr)){
      makeRoleRelation($item->childRoleObjArr);
     }
     }
    }
    //通过父角色的id获取子角色信息 
    function getRoleObjArrByParentId($parentid){
     $operCOGPSTRTSysRole = new COGPSTRTSysRole();
     $operCOGPSTRTSysRole->setColumn($operCOGPSTRTSysRole->getAllColumn());
     $operCOGPSTRTSysRole->setWhere("parentroleid={$parentid}");
     $roleObjArr = $operCOGPSTRTSysRole->convResult2ObjArr($operCOGPSTRTSysRole->selectTable());
     return isset($roleObjArr)?$roleObjArr:array();
    }

    php递归函数用法

    例1:使用静态变量实现递归。

    代码示例:

    function test(){
     static $dig=0;
     if($dig++<10){
     echo $dig;
     test();
     }
    }
    test();//12345678910

    例2:使用递归函数和循环实现字符串逆转排列。

    代码示例:

    function unreverse($str){
    for($i=1;$i<=strlen($str);$i++){
    echo substr($str,-$i,1);
    }
    }
    unreverse("abcdefg");
    //gfedcbc
    function reverse($str){
    if(strlen($str)>0){
    reverse(substr($str,1));
    echo substr($str,0,1); return;
    }
    }
    reverse("abcdefg");//gfedcbc

    php递归函数有时可以循环替代,建议当不能用循环替代时再用,因为用循环我们更容易理解,更不容易出错。 php递归函数 php支付递归函数,递归函数就是调用自己本身,这些函数特别适用于浏览动态数据结构,例如树和列表。 几乎没有web应用程序要求使用复杂的数据结构。

    例子:

    代码示例:

    reverse_r(substr($str,1)); echo substr($str,0,1); return; } ?>

    这个程序清单中实现两个函数,这两个函数都可以相反的顺序打印字符串的内容 函数reversr_r是通过递归实现的,而函数reverse_i()是通过循环实现的。

    总结

    以上所述是小编给大家介绍的php递归函数怎么用才有效,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对码农之家网站的支持!


    上一篇:thinkPHP类插入数据库实例操作

    下一篇:解析laravel批量更新多条记录的方法

    相关内容

    • 学了java可以自学PHP吗

      会不会JAVA都可以自学PHP,PHP完全可以零基础入门,会JAVA(其实任何一门语言)对学习PHP是有帮助的。只要你意志力够,自学入门还是不成问题的,想深入还是需要项目经验和公司的历练。 1、不管是PHP还是Java都是不错的选择,目前来说这两种语言都还处在势头上,但是从长远出发还是Java好,毕竟从性能、处理数据各方面来看还是Java有优势一些,当然最终选择还是在你自己的手里。PHP入门相对JAVA简单。深入的话其实也不浅。入门比JAVA好入门一些,语法

      12-08学了java能自学PHP吗

      阅读更多
    • php与java关系大吗

      php与java可以说是没有什么关系,关系就是同样都是编程语言。目前来说java的钱还有前景都是很好的~但是相对于php来说这是条艰难险阻的路,java会比php的结构复杂还有涉及方面都比较广,要学得好的话需要狠下苦工,php相对而言入门的门槛比较低,即使没有语言基础还是有可能学得不错,php来讲主要都是做网站就是B/C端~也可以拿来做系统开发~如果你对生活质量要求高想要专研技术一味干下去的就选java没错~如果你觉得只要快点可以过上好点的生活还有

      12-03php与java有什么关系

      阅读更多
    • php接口和java接口的区别

      java和php接口的区别是:1、php接口中的抽象方法只能是public的,默认也是public权限;2、java中私有方法使用private修饰,供接口中的默认方法或者静态方法调用。

      11-30php接口和java接口区别是什么

      阅读更多
    • 学了Java会PHP吗

      学了java不等于会php,这是两种不同的语言,编程的事情没有投机取巧,目前要用哪个就专注哪种语言,不同的语言语法、函数上总归会有不同,但一旦你对某一种语言深入了(很难说达到精通),你在转换的时候会上手很快。专注网站开发的话,建议PHP,容易上手点。PHP相对于来说要简单点,学起要快一点,小公司开发多用PHP开发,如果你是转行,可以从PHP开始。 1、PHP是函数式语言,Java是面向对象语言,PHP和Java的差异还是相当大的。比如变量声明,

      11-26学了Java就会PHP吗

      阅读更多
    • 懂java还需要学php吗

      懂java不需要特意再去学php,因为java和php是两种语言是不同方面的应用。java更注重于企业及的开发。php主要是做网站的。当你学完java之后在想学php会感到会场简单的,特别是面向对象这块。多学点没坏处,但要是为了学java去学php,就有点画蛇添足了。PHP是一种解释执行的脚本语言,语法和C语言类似,易学易用,不懂电脑的非专业人员稍经学习也能使用PHP.而Java要先编译成Class文件,然后在Java虚拟机上执行,Java开发需要熟悉Java语法以及一些核心的架构,

      11-25会java还需要学php吗

      阅读更多
    • 深入理解php:高级技巧、面向对象与核心技术(第3版)

      深入理解php:高级技巧、面向对象与核心技术(第3版)

      本书是一本帮助中初级PHP程序员修炼成为高级PHP程序员的书,也是一本让PHP程序员能更快、更好地进行应用开发的书,是PHP领域经典,PHPer修炼必读书,包含大量实用案例,极具可操作性,欢迎下载阅读

      大小:76 MBphp

      点击下载
    • PHP7.0+MySQL网站开发全程实例

      PHP7.0+MySQL网站开发全程实例

      《 PHP7.0MySQL网站开发全程实例 》在XAMPP集成化自然环境下,应用Dreamweaver对PHP动态网站开发。《PHP7.0MySQL网站开发全程实例》以全程实例课堂教学为设计方案总体目标,从网站开发自然环境的配

      大小:165.8 MB网站设计

      点击下载
    • PHP5权威编程

      PHP5权威编程

      《PHP5权威编程》一书为大家全面介绍了PHP 5中的新功能、面向对象编程方法及设计模式,还分析阐述了PHP 5中新的数据库连接处理、错误处理和XML处理等机制。希望能够帮助读者系统了解、熟练掌握PHP,大程度地挖掘PHP的潜力,以更低的成本搭建更加稳健、高效的PHP应用。

      大小:25.3 MBPHP5

      点击下载
    • ThinkPHP实战

      ThinkPHP实战

      《ThinkPHP实战》实战性很强,没有冗长的概念讲解,都是实际项目中使用的实用技术,比如验证码、文件上传、图像处理、调试、安全、缓存等。留言板、博客、论坛、微信公众平台开发4个实战项目案例,使读者尽快切入ThinkPHP企业级项目开发。

      大小:28.5 MBThinkPHP

      点击下载
    • PHP和MySQL Web开发(第5版)

      PHP和MySQL Web开发(第5版)

      在《PHP和MySQL Web开发》书中,我们将把使用PHP与MySQL的经验和心得体会毫无保留地分享给你,PHP和MySQL是目前热门的两个Web开发工具。

      大小:27 MB网站开发

      点击下载
    • Modern PHP

      Modern PHP

      本书让你会学到关于应用架构、规划、数据库、安全、测试、调试和部署方面的很好实践。如果你具有PHP基础知识,想提高自己的技能,不要错过这本书

      大小:28 MBPHP

      点击下载
    • PHP核心技术与最佳实践

      PHP核心技术与最佳实践

      《PHP核心技术与最佳实践》系统归纳和深刻解读PHP开发中的编程思想、底层原理、核心技术、开发技巧、编码规范和**实践,为PHP程序员进阶修炼提供全面而高效的指导!

      大小:197.3 MBPHP编程

      点击下载
    • PHP&MySQL跨设备网站开发实例精粹

      PHP&MySQL跨设备网站开发实例精粹

      这本书从易学实用的角度详细讲解了PHP、HTML5语法,MySQL数据库存取,网页之间的信息传递、表单的后端处理等,提供了丰富的网站开发范例,欢迎下载

      大小:80.9 MBPHP编程

      点击下载

    学习笔记