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 相关文章推荐
一个域名查询的程序
Oct 09 PHP
PHP 防注入函数(格式化数据)
Aug 08 PHP
php-perl哈希算法实现(times33哈希算法)
Dec 30 PHP
php基于GD库画五星红旗的方法
Feb 24 PHP
php生成二维码
Aug 10 PHP
php邮件发送的两种方式
Apr 28 PHP
mysql_escape_string()函数用法分析
Apr 25 PHP
PHP入门教程之面向对象基本概念实例分析
Sep 11 PHP
php 生成Tab键或逗号分隔的CSV
Sep 24 PHP
yii2实现Ueditor百度编辑器的示例代码
Nov 02 PHP
PHP封装的分页类与简单用法示例
Feb 25 PHP
php实现的生成排列算法示例
Jul 25 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文件夹与文件目录操作函数介绍
2013/09/09 PHP
PHP中的多种加密技术及代码示例解析
2016/10/20 PHP
php实现记事本案例
2020/10/20 PHP
Html中JS脚本执行顺序简单举例说明
2010/06/19 Javascript
jQuery UI Dialog 创建友好的弹出对话框实现代码
2012/04/12 Javascript
js实现上传图片之上传前预览图片
2013/03/25 Javascript
jquery 构造函数在表单提交过程中修改数据
2015/05/25 Javascript
JS实现动态表格的添加,修改,删除功能(推荐)
2016/06/15 Javascript
jQuery之简单的表单验证实例
2016/07/07 Javascript
AngularJS基础 ng-non-bindable 指令详细介绍
2016/08/02 Javascript
原生js实现网易轮播图效果
2020/04/10 Javascript
微信小程序 UI与容器组件总结
2017/02/21 Javascript
jQuery实现简单日期格式化功能示例
2017/09/19 jQuery
Vue中控制v-for循环次数的实现方法
2018/09/26 Javascript
详解Vue依赖收集引发的问题
2019/04/22 Javascript
使用layer弹窗提交表单时判断表单是否输入为空的例子
2019/09/26 Javascript
Vue管理系统前端之组件拆分封装详解
2020/08/23 Javascript
[01:14]辉夜杯战队访谈宣传片—NEWBEE.Y
2015/12/26 DOTA
Python判断两个对象相等的原理
2017/12/12 Python
对python中for、if、while的区别与比较方法
2018/06/25 Python
python2与python3中关于对NaN类型数据的判断和转换方法
2018/10/30 Python
python中嵌套函数的实操步骤
2019/02/27 Python
python 和c++实现旋转矩阵到欧拉角的变换方式
2019/12/04 Python
Django 自定义权限管理系统详解(通过中间件认证)
2020/03/11 Python
HTML5 Canvas draw方法制作动画效果示例
2013/07/11 HTML / CSS
全球第二大家装零售商:Lowe’s
2018/01/13 全球购物
物流创业计划书
2014/02/01 职场文书
初中高效课堂实施方案
2014/02/26 职场文书
创业大赛策划书
2014/03/01 职场文书
村安全生产责任书
2014/08/25 职场文书
关于学习的决心书
2015/02/05 职场文书
教师个人发展总结
2015/02/11 职场文书
2015年政治教研组工作总结
2015/07/22 职场文书
大学生如何逃脱“毕业季创业队即散伙”魔咒?
2019/08/19 职场文书
PyTorch 如何设置随机数种子使结果可复现
2021/05/12 Python
Java各种比较对象的方式的对比总结
2021/06/20 Java/Android