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 相关文章推荐
使用sockets:从新闻组中获取文章(三)
Oct 09 PHP
从一个不错的留言本弄的mysql数据库操作类
Sep 02 PHP
php获取地址栏信息的代码
Oct 08 PHP
PHP autoload与spl_autoload自动加载机制的深入理解
Jun 05 PHP
php+mysql实现无限级分类
Nov 11 PHP
php5.4传引用时报错问题分析
Jan 22 PHP
PHP实现自动识别原编码并对字符串进行编码转换的方法
Jul 13 PHP
php使用glob函数遍历文件和目录详解
Sep 23 PHP
PHP封装的page分页类定义与用法完整示例
Dec 24 PHP
Laravel 框架返回状态拦截代码
Oct 18 PHP
微信小程序发送订阅消息的方法(php 为例)
Oct 30 PHP
Linux系统下安装PHP7.3版本
Jun 26 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带公钥加密类分享(每次加密结果都不一样哦)
2014/08/20 PHP
PHP和Shell实现检查SAMBA与NFS Server是否存在
2015/01/07 PHP
PHP ajax 异步执行不等待执行结果的处理方法
2015/05/27 PHP
Laravel中使用FormRequest进行表单验证方法及问题汇总
2016/06/19 PHP
php分页查询的简单实现代码
2017/03/14 PHP
php中yar框架实例用法讲解
2020/12/27 PHP
JavaScript 闭包在封装函数时的简单分析
2009/11/28 Javascript
用Javascript实现Sleep暂停功能代码
2010/09/03 Javascript
javascript面向对象之二 命名空间
2011/02/08 Javascript
仿微博字符限制效果实现代码
2012/04/20 Javascript
js操作输入框提示信息且响应鼠标事件
2014/03/25 Javascript
AngularJS教程之环境设置
2016/08/16 Javascript
老生常谈JQuery data方法的使用
2016/09/09 Javascript
JavaScript实现旋转轮播图
2020/08/18 Javascript
vue draggable resizable gorkys与v-chart使用与总结
2019/09/05 Javascript
Vue组件为什么data必须是一个函数
2020/06/11 Javascript
[04:02]DOTA2上海特锦赛小组赛第二日recap精彩回顾
2016/02/28 DOTA
Python实现字典的key和values的交换
2015/08/04 Python
一篇文章快速了解Python的GIL
2018/01/12 Python
Python发送邮件功能示例【使用QQ邮箱】
2018/12/04 Python
python集合是否可变总结
2019/06/20 Python
python机器学习库xgboost的使用
2020/01/20 Python
Tensorflow 卷积的梯度反向传播过程
2020/02/10 Python
好药师网上药店:安全合法的网上药品零售药房
2017/02/15 全球购物
Otiumberg官网:英国半精致珠宝品牌
2021/01/16 全球购物
药剂学专业应届生自荐信
2013/09/29 职场文书
政法学院毕业生求职信
2014/02/28 职场文书
十八届三中全会感言
2014/03/10 职场文书
求职信模板
2014/05/23 职场文书
质监局领导班子对照检查材料思想汇报
2014/09/27 职场文书
三好学生事迹材料
2014/12/24 职场文书
2016公司年会通知范文
2015/04/25 职场文书
永不妥协观后感
2015/06/10 职场文书
会议承办单位欢迎词
2015/09/30 职场文书
Go语言操作数据库及其常规操作的示例代码
2021/04/21 Golang
前端使用svg图片改色实现示例
2022/07/23 HTML / CSS