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 相关文章推荐
PHP脚本的10个技巧(4)
Oct 09 PHP
PHP5新特性: 更加面向对象化的PHP
Nov 18 PHP
php5 图片验证码实现代码
Dec 11 PHP
PHP转换文件夹下所有文件编码的实现代码
Jun 06 PHP
ThinkPHP模板范围判断输出In标签与Range标签用法详解
Jun 30 PHP
PHP输出两个数字中间有多少个回文数的方法
Mar 23 PHP
PHP查找与搜索数组元素方法总结
Jun 12 PHP
android上传图片到PHP的过程详解
Aug 03 PHP
php基于双向循环队列实现历史记录的前进后退等功能
Aug 08 PHP
PHP判断上传文件类型的解决办法
Oct 20 PHP
thinkPHP5.0框架引入Traits功能实例分析
Mar 18 PHP
Laravel 集成 Geetest验证码的方法
May 14 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简单系统查询模块代码打包下载
2008/06/07 PHP
PHP登陆后跳转到登陆前页面实现思路及代码
2014/01/17 PHP
Codeigniter检测表单post数据的方法
2015/03/21 PHP
php解析字符串里所有URL地址的方法
2015/04/03 PHP
ThinkPHP中类的构造函数_construct()与_initialize()的区别详解
2017/03/13 PHP
HTML中不支持静态Expando的元素的问题
2007/03/08 Javascript
Chrome中模态对话框showModalDialog返回值问题的解决方法
2010/05/25 Javascript
JS重要知识点小结
2011/11/06 Javascript
获取下拉列表框的值是数组,split,$.inArray示例
2013/11/13 Javascript
JQuery EasyUI 数字格式化处理示例
2014/05/05 Javascript
jQuery EasyUI datagrid实现本地分页的方法
2015/02/13 Javascript
在JavaScript中处理数组之reverse()方法的使用
2015/06/09 Javascript
使用javascript将时间转换成今天,昨天,前天等格式
2015/06/25 Javascript
vue router路由嵌套不显示问题的解决方法
2017/06/17 Javascript
微信小程序如何像vue一样在动态绑定类名
2018/04/17 Javascript
vue 标签属性数据绑定和拼接的实现方法
2018/05/17 Javascript
原来JS还可以这样拆箱转换详解
2019/02/01 Javascript
js实现点击生成随机div
2020/01/16 Javascript
vue实现带过渡效果的下拉菜单功能
2020/02/19 Javascript
python fabric使用笔记
2015/05/09 Python
python实现判断数组是否包含指定元素的方法
2015/07/15 Python
Python实现抓取网页生成Excel文件的方法示例
2017/08/05 Python
Python 通配符删除文件的实例
2018/04/24 Python
Python中的类与类型示例详解
2019/07/10 Python
完美解决python3.7 pip升级 拒绝访问问题
2019/07/12 Python
如何使用Python破解ZIP或RAR压缩文件密码
2020/01/09 Python
windows10环境下用anaconda和VScode配置的图文教程
2020/03/30 Python
加拿大票务网站:Ticketmaster加拿大
2017/07/17 全球购物
Hunkemöller西班牙:欧洲最大的内衣连锁店
2018/08/15 全球购物
英文版银行求职信
2013/10/09 职场文书
房地产开盘策划方案
2014/02/10 职场文书
升职自荐信怎么写
2015/03/05 职场文书
社区活动总结范文
2015/05/07 职场文书
四群教育工作总结
2015/08/10 职场文书
Golang 空map和未初始化map的注意事项说明
2021/04/29 Golang
python实现一个简单的贪吃蛇游戏附代码
2022/06/28 Python