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项目打包方法
Feb 18 PHP
THINKPHP+JS实现缩放图片式截图的实现
Mar 07 PHP
php使HTML标签自动补全闭合函数代码
Oct 04 PHP
关于PHP内存溢出问题的解决方法
Jun 25 PHP
php实现的太平洋时间和北京时间互转的自定义函数分享
Aug 19 PHP
给WordPress中的留言加上楼层号的PHP代码实例
Dec 14 PHP
Yii2验证器(Validator)用法分析
Jul 23 PHP
PHP自定义错误用法示例
Sep 28 PHP
PHP编辑器PhpStrom运行缓慢问题
Feb 21 PHP
Yii2 中实现单点登录的方法
Mar 09 PHP
PhpStorm本地断点调试的方法步骤
May 21 PHP
php+js实现的拖动滑块验证码验证表单操作示例【附源码下载】
May 27 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的无限分类实现想法~
2007/01/02 PHP
PHP中替换换行符的几种方法小结
2012/10/15 PHP
PHP单例模式定义与使用实例详解
2017/02/06 PHP
php封装的mongodb操作类代码
2017/08/06 PHP
form中限制文本字节数js代码
2007/06/10 Javascript
JavaScript中的Location地址对象
2008/01/16 Javascript
Javascript引用指针使用介绍
2012/11/07 Javascript
javascript 三种方法实现获得和设置以及移除元素属性
2013/03/20 Javascript
jquery foreach使用示例
2013/09/12 Javascript
jquery实现当滑动到一定位置时固定效果
2014/06/17 Javascript
使用NodeJs 开发微信公众号(三)微信事件交互实例
2016/03/02 NodeJs
JavaScript中split与join函数的进阶使用技巧
2016/05/03 Javascript
JavaScript的Backbone.js框架环境搭建及Hellow world示例
2016/05/07 Javascript
纯js仿淘宝京东商品放大镜功能
2017/03/02 Javascript
React-router中结合webpack实现按需加载实例
2017/05/25 Javascript
Angular设置别名alias的方法
2018/11/08 Javascript
基于vue如何发布一个npm包的方法步骤
2019/05/15 Javascript
element-ui 中使用upload多文件上传只请求一次接口
2019/07/19 Javascript
React实现轮播效果
2020/08/25 Javascript
JavaScript Blob对象原理及用法详解
2020/10/14 Javascript
vue created钩子函数与mounted钩子函数的用法区别
2020/11/05 Javascript
跟老齐学Python之有容乃大的list(1)
2014/09/14 Python
Python实现批量修改文件名实例
2015/07/08 Python
PyQt5利用QPainter绘制各种图形的实例
2017/10/19 Python
python实现名片管理系统
2018/11/29 Python
浅谈Python中的全局锁(GIL)问题
2019/01/11 Python
Ubuntu下Anaconda和Pycharm配置方法详解
2019/06/14 Python
flask实现验证码并验证功能
2019/12/05 Python
python打开音乐文件的实例方法
2020/07/21 Python
英国广泛的照明产品网站:Lights4living
2018/01/28 全球购物
Myholidays美国:在线旅游网站
2019/08/16 全球购物
Kingsoft金山公司C/C++笔试题
2016/05/10 面试题
学生手册家长评语
2014/02/10 职场文书
公司年会策划方案
2014/05/17 职场文书
骨干教师事迹材料
2014/12/17 职场文书
2015年技术工作总结范文
2015/04/20 职场文书