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 相关文章推荐
文件上传类
Oct 09 PHP
PHP中的正则表达式函数介绍
Feb 27 PHP
PHP、Nginx、Apache中禁止网页被iframe引用的方法
Oct 01 PHP
PHP中模拟处理HTTP PUT请求的例子
Jul 22 PHP
详解PHP实现执行定时任务
Dec 21 PHP
PHP会员找回密码功能的简单实现
Sep 05 PHP
Zend Framework分发器用法示例
Dec 11 PHP
PHP new static 和 new self详解
Feb 19 PHP
老生常谈PHP面向对象之标识映射
Jun 21 PHP
PHP实现无限极分类的两种方式示例【递归和引用方式】
Mar 25 PHP
Yii框架实现对数据库的CURD操作示例
Sep 03 PHP
php中yar框架实例用法讲解
Dec 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中SimpleXML函数用法分析
2014/11/26 PHP
用php来限制每个ip每天浏览页面数量的实现思路
2015/02/24 PHP
再谈Yii Framework框架中的事件event原理与应用
2020/04/07 PHP
提高代码性能技巧谈—以创建千行表格为例
2006/07/01 Javascript
js类中获取外部函数名的方法
2007/08/19 Javascript
JavaScript 事件查询综合
2009/07/13 Javascript
jQuery boxy弹出层插件中文演示及使用讲解
2011/02/24 Javascript
a标签的href与onclick事件的区别详解
2014/11/12 Javascript
javascript实现图片跟随鼠标移动效果的方法
2015/05/13 Javascript
jquery左右全屏大尺寸多图滑动效果代码分享
2015/08/28 Javascript
微信小程序 wxapp地图 map详解
2016/10/31 Javascript
localStorage实现便签小程序
2016/11/28 Javascript
AngularJS 限定$scope的范围实例详解
2017/06/23 Javascript
AngularJS实现进度条功能示例
2017/07/05 Javascript
JavaScript动态绑定详解
2017/09/14 Javascript
Vuejs在v-for中,利用index来对第一项添加class的方法
2018/03/03 Javascript
Node.js进阶之核心模块https入门
2018/05/23 Javascript
Element Collapse 折叠面板的使用方法
2020/07/26 Javascript
[33:19]完美世界DOTA2联赛PWL S2 PXG vs InkIce 第一场 11.26
2020/11/30 DOTA
python批量生成本地ip地址的方法
2015/03/23 Python
在树莓派2或树莓派B+上安装Python和OpenCV的教程
2015/03/30 Python
python实现带错误处理功能的远程文件读取方法
2015/04/29 Python
总结Python中逻辑运算符的使用
2015/05/13 Python
python中is与双等于号“==”的区别示例详解
2017/11/21 Python
python 定时修改数据库的示例代码
2018/04/08 Python
python 搭建简单的http server,可直接post文件的实例
2019/01/03 Python
python 实现交换两个列表元素的位置示例
2019/06/26 Python
利用Python小工具实现3秒钟将视频转换为音频
2019/10/29 Python
模具设计与制造专业应届生求职信
2013/10/18 职场文书
写给学生的新学期寄语
2014/01/18 职场文书
园艺师求职信
2014/03/10 职场文书
党支部评议意见
2015/06/02 职场文书
电影圆明园观后感
2015/06/03 职场文书
优秀党员主要事迹材料
2015/11/04 职场文书
2016入党积极分子心得体会
2016/01/06 职场文书
基于docker安装zabbix的详细教程
2022/06/05 Servers