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静态调用非静态方法的应用分析
May 02 PHP
如何批量替换相对地址为绝对地址(利用bat批处理实现)
May 27 PHP
PHP设计模式之命令模式的深入解析
Jun 13 PHP
基于php使用memcache存储session的详解
Jun 25 PHP
提升PHP性能的21种方法介绍
Jun 25 PHP
php时区转换转换函数
Jan 07 PHP
php时间计算相关问题小结
May 09 PHP
php使用Jpgraph创建柱状图展示年度收支表效果示例
Feb 15 PHP
Thinkphp实现站点静态化的方法详解
Mar 21 PHP
利用php的ob缓存机制实现页面静态化方法
Jul 09 PHP
PHP基于自定义函数实现的汉字转拼音功能实例
Sep 30 PHP
ThinkPHP整合datatables实现服务端分页的示例代码
Feb 10 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 include的妙用,实现路径加密
2008/07/29 PHP
php使用ZipArchive提示Fatal error: Class ZipArchive not found in的解决方法
2014/11/04 PHP
php新浪微博登录接口用法实例
2014/12/23 PHP
AES加解密在php接口请求过程中的应用示例
2016/10/26 PHP
设定php简写功能的方法
2019/11/28 PHP
JS验证控制输入中英文字节长度(input、textarea等)具体实例
2013/06/21 Javascript
图片上传判断及预览脚本的效果实例
2013/08/07 Javascript
js实现数组去重、判断数组以及对象中的内容是否相同
2013/11/29 Javascript
输入框过滤非数字的js代码
2014/09/18 Javascript
jQuery插件fullPage.js实现全屏滚动效果
2016/12/02 Javascript
深入解析js轮播插件核心代码的实现过程
2017/04/14 Javascript
详解vue过滤器在v2.0版本用法
2017/06/01 Javascript
Node.js自定义实现文件路由功能
2017/09/22 Javascript
详解ES6 Fetch API HTTP请求实用指南
2018/11/14 Javascript
微信小程序--特定区域滚动到顶部时固定的方法
2019/04/28 Javascript
javascript使用substring实现的展开与收缩文字功能示例
2019/06/17 Javascript
js实现圆形菜单选择器
2020/12/03 Javascript
python中实现k-means聚类算法详解
2017/11/11 Python
python爬虫简单的添加代理进行访问的实现代码
2019/04/04 Python
python多进程重复加载的解决方式
2019/12/13 Python
html5实现移动端适配完美写法
2017/11/16 HTML / CSS
Fossil美国官网:化石手表、手袋、首饰及配饰
2019/02/17 全球购物
学生党员思想汇报
2013/12/28 职场文书
电脑租赁公司创业计划书
2014/01/08 职场文书
单位介绍信范文
2014/01/18 职场文书
年终晚会活动方案
2014/08/21 职场文书
解放思想演讲稿
2014/09/11 职场文书
离婚协议书包括哪些内容
2014/10/16 职场文书
2014年财务个人工作总结
2014/12/08 职场文书
班主任寄语2015
2015/02/26 职场文书
施工员岗位职责范本
2015/04/11 职场文书
毕业典礼致辞
2015/07/29 职场文书
开学第一天的感想
2015/08/10 职场文书
Python中with上下文管理协议的作用及用法
2022/03/18 Python
PYTHON基于Pyecharts绘制常见的直角坐标系图表
2022/04/28 Python
MySQL数据库查询之多表查询总结
2022/08/05 MySQL