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实现WEB动态网页静态
Oct 09 PHP
用PHP生成静态HTML速度快类库
Mar 18 PHP
PHP数据流应用的一个简单实例
Sep 14 PHP
php cc攻击代码与防范方法
Oct 18 PHP
php的ajax简单实例
Feb 27 PHP
php读取富文本的时p标签会出现红线是怎么回事
May 13 PHP
去掉destoon资讯内容页keywords关键字自带的文章标题的方法
Aug 21 PHP
php实现字符串反转输出的方法
Mar 14 PHP
PHP缓冲区用法总结
Feb 14 PHP
源码分析 Laravel 重复执行同一个队列任务的原因
Dec 25 PHP
Laravel 加载第三方类库的方法
Apr 20 PHP
ThinkPHP框架实现的邮箱激活功能示例
Jun 15 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 curl库实现整站克隆功能
2015/02/12 PHP
如何在HTML 中嵌入 PHP 代码
2015/05/13 PHP
PHP实现从上往下打印二叉树的方法
2018/01/18 PHP
来自chinaz的ajax获取评论代码
2008/05/03 Javascript
JavaScript 页面坐标相关知识整理
2010/01/09 Javascript
js综合应用实例简单的表格统计
2013/09/03 Javascript
代码获取历史上的今天发生的事
2014/04/11 Javascript
node.js中的fs.unlink方法使用说明
2014/12/15 Javascript
node.js中的fs.createReadStream方法使用说明
2014/12/17 Javascript
JS实现不使用图片仿Windows右键菜单效果代码
2015/10/22 Javascript
jQuery实现鼠标双击Table单元格变成文本框及输入内容后更新到数据库的方法
2015/11/25 Javascript
Ionic实现页面下拉刷新(ion-refresher)功能代码
2016/06/03 Javascript
JS中的hasOwnProperty()、propertyIsEnumerable()和isPrototypeOf()
2016/08/11 Javascript
BootStrap便签页的简单应用
2017/01/06 Javascript
解决bootstrap中使用modal加载kindeditor时弹出层文本框不能输入的问题
2017/06/05 Javascript
原生JS获取元素的位置与尺寸实现方法
2017/10/18 Javascript
node基于puppeteer模拟登录抓取页面的实现
2018/05/09 Javascript
vue 使用html2canvas将DOM转化为图片的方法
2018/09/11 Javascript
vue+element搭建后台小总结 el-dropdown下拉功能
2020/04/10 Javascript
如何通过JS实现日历简单算法
2020/10/14 Javascript
python中使用mysql数据库详细介绍
2015/03/27 Python
详细解读Python的web.py框架下的application.py模块
2015/05/02 Python
Python实现的人工神经网络算法示例【基于反向传播算法】
2017/11/11 Python
pandas的object对象转时间对象的方法
2018/04/11 Python
python用BeautifulSoup库简单爬虫实例分析
2018/07/30 Python
Python实现多级目录压缩与解压文件的方法
2018/09/01 Python
浅析Python 实现一个自动化翻译和替换的工具
2019/04/14 Python
Python实现元素等待代码实例
2019/11/11 Python
在Tensorflow中实现梯度下降法更新参数值
2020/01/23 Python
高三语文教学反思
2014/01/15 职场文书
高中生职业生涯规划书
2014/02/24 职场文书
金融管理专业毕业生求职信
2014/03/12 职场文书
幸福中国演讲稿
2014/09/12 职场文书
逃出克隆岛观后感
2015/06/09 职场文书
spring cloud 配置中心native配置方式
2021/09/25 Java/Android
【海涛解说】暗牧也疯狂,牛蛙成配角
2022/04/01 DOTA