php递归函数怎么用才有效


Posted in PHP onFebruary 24, 2018

有关php递归函数的用法,分享几个php递归函数的例子,在php编程中,使用递归进行函数调用很常见,递归函数用的好,可以提高代码效率,通过例子学习php递归函数的使用。

一、什么是递归函数?

一个函数在它的函数体内调用它自身称为递归调用。 这种函数称为递归函数。

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递归使用示例(php递归函数),包括递归获得角色ID字符串、递归获取级联角色信息数组、通过父角色的id获取子角色信息。

例子:

代码示例:

//递归获得角色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递归函数用法

例1:使用静态变量实现递归。

代码示例:

function test(){
 static $dig=0;
 if($dig++<10){
 echo $dig;
 test();
 }
}
test();//12345678910

例2:使用递归函数和循环实现字符串逆转排列。

代码示例:

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

例子:

代码示例:

reverse_r(substr($str,1)); echo substr($str,0,1); return; } ?>

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

总结

以上所述是小编给大家介绍的php递归函数怎么用才有效,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

PHP 相关文章推荐
简体中文转换为繁体中文的PHP函数
Oct 09 PHP
延长phpmyadmin登录时间的方法
Feb 06 PHP
解析htaccess伪静态的规则
Jun 18 PHP
mac下安装nginx和php
Nov 04 PHP
如何把php5.3版本升级到php5.4或者php5.5
Jul 31 PHP
PHP常用的三种设计模式汇总
Aug 28 PHP
PHP针对多用户实现更换头像功能
Sep 04 PHP
WAF的正确bypass
Jan 05 PHP
yii2利用自带UploadedFile实现上传图片的示例
Feb 16 PHP
PHP实现文件下载【实例分享】
Apr 28 PHP
PHP实现的折半查询算法示例
Oct 09 PHP
laravel 框架配置404等异常页面
Jan 07 PHP
php格式文件打开的四种方法
Feb 24 #PHP
Docker搭建自己的PHP开发环境
Feb 24 #PHP
php爬取天猫和淘宝商品数据
Feb 23 #PHP
Laravel如何使用Redis共享Session
Feb 23 #PHP
Laravel 实现密码重置功能
Feb 23 #PHP
支持汉转拼和拼音分词的PHP中文工具类ChineseUtil
Feb 23 #PHP
对于Laravel 5.5核心架构的深入理解
Feb 22 #PHP
You might like
php 时间计算问题小结
2009/01/04 PHP
PHP使用CURL实现对带有验证码的网站进行模拟登录的方法
2014/07/23 PHP
详解YII关联查询
2016/01/10 PHP
javascript 强制刷新页面的实现代码
2009/12/13 Javascript
jquery last-child 列表最后一项的样式
2010/01/22 Javascript
通过继承IHttpHandle实现JS插件的组织与管理
2010/07/13 Javascript
jquery autocomplete自动完成插件的的使用方法
2010/08/07 Javascript
Json2Template.js 基于jquery的插件 绑定JavaScript对象到Html模板中
2011/10/29 Javascript
玩转方法:call和apply
2014/05/08 Javascript
javascript创建函数的20种方式汇总
2015/06/23 Javascript
常见的javascript跨域通信方法
2015/12/31 Javascript
JavaScript的MVVM库Vue.js入门学习笔记
2016/05/03 Javascript
vue.js表格分页示例
2016/10/18 Javascript
Ajax高级笔记 JavaScript高级程序设计笔记
2017/06/22 Javascript
浅谈React中组件间抽象
2018/01/27 Javascript
使用JS判断移动端手机横竖屏状态
2018/07/30 Javascript
JavaScript基于用户照片姓名生成海报
2020/05/29 Javascript
python 获取et和excel的版本号
2009/04/09 Python
详解Python里使用正则表达式的ASCII模式
2017/11/02 Python
Python 将RGB图像转换为Pytho灰度图像的实例
2017/11/14 Python
python中不能连接超时的问题及解决方法
2018/06/10 Python
python实现俄罗斯方块
2018/06/26 Python
python 将list转成字符串,中间用符号分隔的方法
2018/10/23 Python
python对视频画框标记后保存的方法
2018/12/07 Python
利用python计算时间差(返回天数)
2019/09/07 Python
关于numpy数组轴的使用详解
2019/12/05 Python
Pandas直接读取sql脚本的方法
2021/01/21 Python
CSS3等相关属性制作分页导航实现代码
2012/12/24 HTML / CSS
Myprotein加拿大官网:欧洲第一的运动营养品牌
2018/01/06 全球购物
创意爱尔兰礼物:Creative Irish Gifts
2020/01/29 全球购物
大学生就业自荐信
2013/10/26 职场文书
优秀大学生的自我评价
2014/01/16 职场文书
供用电专业求职信
2014/07/07 职场文书
2015年宣传部部长竞选演讲稿
2014/11/28 职场文书
2015年三好一满意工作总结
2015/07/24 职场文书
Python用any()函数检查字符串中的字母以及如何使用all()函数
2022/04/14 Python