php递归使用示例(php递归函数)


Posted in PHP onFebruary 14, 2014
//递归获得角色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的递归函数用法

一个函数在它的函数体内调用它自身称为递归调用。这种函数称为递归函数。这对于程序员来说,通常有很高的实用价值,常用来将复杂的问题分解为简单的并相同的情况,反复做这种处理直到问题解决。

用递归函数与不用递归函数的区别

示例一:使用静态变量

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支付递归函数,递归函数就是调用自己本身,这些函数特别适用于浏览动态数据结构,例如树和列表。
几乎没有web应用程序要求使用复杂的数据结构

<?php
function reversr_r($str)
{
if (strlen($str)>0)
reverse_r(substr($str,1));
echo substr($str,0,1);
return;
}
?>

<?php
function reverse_i($str)
{
for($i=1;$i<=strlen($str);$i++)
{
echo substr($str,-$i,1);
}
}

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

PHP 相关文章推荐
从零开始 教你如何搭建Discuz!4.1论坛
Jul 07 PHP
不用GD库生成当前时间的PNG格式图象的程序
Oct 09 PHP
不用mod_rewrite直接用php实现伪静态化页面代码
Oct 04 PHP
使用openssl实现rsa非对称加密算法示例
Jan 24 PHP
PHP+Mysql实现多关键字与多字段生成SQL语句的函数
Nov 05 PHP
php网站被挂木马后的修复方法总结
Nov 06 PHP
php查找字符串出现次数的方法
Dec 01 PHP
PHP中浮点数计算比较及取整不准确的解决方法
Jan 09 PHP
php安装swoole扩展的方法
Mar 19 PHP
php类的自动加载操作实例详解
Sep 28 PHP
thinkPHP框架实现的短信接口验证码功能示例
Jun 20 PHP
PHP封装的完整分页类示例
Aug 21 PHP
php根据isbn书号查询amazon网站上的图书信息的示例
Feb 13 #PHP
使用php记录用户通过搜索引擎进网站的关键词
Feb 13 #PHP
php中simplexml_load_string使用实例分享
Feb 13 #PHP
使用php显示搜索引擎来的关键词
Feb 13 #PHP
php根据日期判断星座的函数分享
Feb 13 #PHP
php的hash算法介绍
Feb 13 #PHP
php去除字符串换行符示例分享
Feb 13 #PHP
You might like
PHP异常处理定义与使用方法分析
2017/07/25 PHP
详解php中curl返回false的解决办法
2019/03/18 PHP
Laravel框架源码解析之模型Model原理与用法解析
2020/05/14 PHP
JS构建页面的DOM节点结构的实现代码
2011/12/09 Javascript
Javascript中 关于prototype属性实现继承的原理图
2013/04/16 Javascript
JSON取值前判断
2014/12/23 Javascript
你可能不知道的JSON.stringify()详解
2017/08/17 Javascript
vue 下列表侧滑操作实例代码详解
2018/07/24 Javascript
vue router 配置路由的方法
2018/07/26 Javascript
超详细的5个Shell脚本实例分享(值得收藏)
2019/08/15 Javascript
js实现简易计算器小功能
2020/11/18 Javascript
[00:57]林俊杰助阵DOTA2亚洲邀请赛
2015/01/28 DOTA
Python中使用urllib2防止302跳转的代码例子
2014/07/07 Python
python自动化测试之从命令行运行测试用例with verbosity
2014/09/28 Python
Python实现二分查找算法实例
2015/05/26 Python
python如何通过实例方法名字调用方法
2018/03/21 Python
对Python的多进程锁的使用方法详解
2019/02/18 Python
Django框架实现的分页demo示例
2019/05/25 Python
Python发送手机动态验证码代码实例
2020/02/28 Python
Python join()函数原理及使用方法
2020/11/14 Python
Pycharm安装第三方库失败解决方案
2020/11/17 Python
CSS3+Sprite实现僵尸行走动画特效源码
2016/01/27 HTML / CSS
CSS3中的弹性布局em运用入门详解 1em等于多少像素
2021/02/08 HTML / CSS
canvas实现俄罗斯方块的方法示例
2018/12/13 HTML / CSS
武汉某公司的C#笔试题面试题
2015/12/25 面试题
电气工程及自动化专业自荐书范文
2013/12/18 职场文书
法学个人求职信范文
2014/01/27 职场文书
物理教学随笔感言
2014/02/22 职场文书
少儿节目主持串词
2014/04/02 职场文书
岗位工作说明书
2014/07/29 职场文书
离职报告范文
2014/11/04 职场文书
2014年数学教研组工作总结
2014/12/06 职场文书
2015婚礼主持词开场白
2015/05/28 职场文书
护士爱岗敬业心得体会
2016/01/25 职场文书
PHP使用非对称加密算法RSA
2021/04/21 PHP
QT连接MYSQL数据库的详细步骤
2021/07/07 MySQL