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
简化php模板页面中分页代码的解析
Feb 06 PHP
php cookie 登录验证示例代码
Mar 16 PHP
使用zend studio for eclipse不能激活代码提示功能的解决办法
Oct 11 PHP
PHP在获取指定目录下的目录,在获取的目录下面再创建文件,多平台
Aug 03 PHP
PHP生成短网址的3种方法代码实例
Jul 08 PHP
解决phpcms更换javascript的幻灯片代码调用图片问题
Dec 26 PHP
thinkPHP中create方法与令牌验证实例浅析
Dec 08 PHP
Laravel框架分页实现方法分析
Jun 12 PHP
PHP实现 APP端微信支付功能
Jun 22 PHP
实例讲解通过​PHP创建数据库
Jan 20 PHP
浅析PHP echo 和 print 语句
Jun 30 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代码
2013/11/19 PHP
PHP中类属性与类静态变量的访问方法示例
2016/07/13 PHP
jQuery 阴影插件代码分享
2012/01/09 Javascript
JavaScript自定义事件介绍
2013/08/29 Javascript
jQuery Mobile 导航栏代码
2013/11/01 Javascript
JS实现多物体缓冲运动实例代码
2013/11/29 Javascript
JavaScript设计模式之单件模式介绍
2014/12/28 Javascript
JavaScript操作HTML元素和样式的方法详解
2015/10/21 Javascript
javascript中利用柯里化函数实现bind方法
2016/04/29 Javascript
Angularjs使用过滤器完成排序功能
2017/09/20 Javascript
基于openlayers4实现点的扩散效果
2020/08/17 Javascript
node中modules.exports与exports导出的区别
2018/06/08 Javascript
Vue 应用中结合vux使用微信 jssdk的方法
2018/08/28 Javascript
vue项目中mock.js的使用及基本用法
2019/05/22 Javascript
Vue配置marked链接添加target=&quot;_blank&quot;的方法
2019/07/19 Javascript
JavaScript实现简单贪吃蛇效果
2020/03/09 Javascript
微信小程序动态评分展示/五角星展示/半颗星展示/自定义长度展示功能的实现
2020/07/22 Javascript
vue下载二进制流图片操作
2020/10/26 Javascript
js实现简易计算器小功能
2020/11/18 Javascript
python自动化工具日志查询分析脚本代码实现
2013/11/26 Python
TensorFlow实现卷积神经网络CNN
2018/03/09 Python
浅谈python写入大量文件的问题
2018/11/09 Python
DjangoWeb使用Datatable进行后端分页的实现
2020/05/18 Python
HTML5如何为形状图上颜色怎么绘制具有颜色和透明度的矩形
2014/06/23 HTML / CSS
Html5页面获取微信公众号的openid的方法
2020/05/12 HTML / CSS
Skechers越南官方网站:来自美国的运动休闲品牌
2021/02/22 全球购物
Yahoo-PHP面试题1
2016/07/20 面试题
自考生自我评价分享
2014/01/18 职场文书
学习张林森心得体会
2014/09/10 职场文书
2014年乡镇人大工作总结
2014/11/25 职场文书
2014年政工师工作总结
2014/12/18 职场文书
中考学习决心书
2015/02/04 职场文书
预备党员入党感言
2015/08/01 职场文书
合作协议书格式范本
2016/03/21 职场文书
创业计划书之个人工作室
2019/08/22 职场文书
sql server偶发出现死锁的解决方法
2022/04/10 SQL Server