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 相关文章推荐
NO3第三帝国留言簿制作过程
Oct 09 PHP
几种有用的变型 PHP中循环语句的用法介绍
Jan 30 PHP
php DOS攻击实现代码(附如何防范)
May 29 PHP
php5.5中类级别的常量使用介绍
Oct 02 PHP
PHP表单数据写入MySQL数据库的代码
May 31 PHP
无需数据库在线投票调查php代码
Jul 20 PHP
Yii2简单实现多语言配置的方法
Jul 23 PHP
PHP上传Excel文件导入数据到MySQL数据库示例
Oct 25 PHP
利用PHP访问MySql数据库的逻辑操作以及增删改查的实例讲解
Aug 30 PHP
Laravel5.1框架注册中间件的三种场景详解
Jul 09 PHP
PHP实现一个限制实例化次数的类示例
Sep 16 PHP
PHP超级全局变量【$GLOBALS,$_SERVER,$_REQUEST等】用法实例分析
Dec 11 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清除bom示例
2014/03/03 PHP
destoon二次开发常用数据库操作
2014/06/21 PHP
php微信公众号开发(3)php实现简单微信文本通讯
2016/12/15 PHP
多浏览器支持的右下角浮动窗口
2010/04/01 Javascript
在图片上显示左右箭头类似翻页的代码
2013/03/04 Javascript
js 获取radio按钮值的实例
2013/08/17 Javascript
Enter转换为Tab的小例子(兼容IE,Firefox)
2013/11/14 Javascript
使用jQuery设置disabled属性与移除disabled属性
2014/08/21 Javascript
jquery通过ajax加载一段文本内容的方法
2015/01/15 Javascript
详解JavaScript中的forEach()方法的使用
2015/06/08 Javascript
AngularJS指令详解及示例代码
2016/08/16 Javascript
微信小程序 video组件详解
2016/10/25 Javascript
微信小程序 视图容器组件的详解及实例代码
2017/01/19 Javascript
angular仿支付宝密码框输入效果
2017/03/25 Javascript
vue-cli如何快速构建vue项目
2017/04/26 Javascript
详解node nvm进行node多版本管理
2017/10/21 Javascript
使用Vue实现图片上传的三种方式
2018/07/17 Javascript
vue+elementUI动态生成面包屑导航教程
2019/11/04 Javascript
详解vue-flickity的fullScreen功能实现
2020/04/07 Javascript
使用Python对MySQL数据操作
2017/04/06 Python
Python Pandas批量读取csv文件到dataframe的方法
2018/10/08 Python
纯CSS3制作的鼠标悬停时边框旋转
2017/01/03 HTML / CSS
英国的屈臣氏:Boots博姿
2017/12/23 全球购物
工程专业毕业生自荐信范文
2013/12/25 职场文书
企业项目策划书
2014/01/11 职场文书
小学生成长感言
2014/01/30 职场文书
关于群众路线的心得体会
2014/11/05 职场文书
优秀教师先进材料
2014/12/16 职场文书
入党积极分子个人总结
2015/03/02 职场文书
2015中秋节慰问信范文
2015/03/23 职场文书
我的中国梦主题教育活动总结
2015/05/07 职场文书
PostgreSQL存储过程实用脚本(二):创建函数入门
2021/04/05 PostgreSQL
SQL Server基本使用和简单的CRUD操作
2021/04/05 SQL Server
python文件目录操作之os模块
2021/05/08 Python
教你怎么用Python selenium操作浏览器对象的基础API
2021/06/23 Python
PostgreSQL自动更新时间戳实例代码
2021/11/27 PostgreSQL