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的网址
Nov 25 PHP
php时间不正确的解决方法
Apr 09 PHP
PHP 批量删除数据的方法分析
Oct 30 PHP
php 伪造ip以及url来路信息方法汇总
Nov 25 PHP
php中stdClass的用法分析
Feb 27 PHP
PHP中你应该知道的require()文件包含的正确用法
Jun 12 PHP
PHP实现批量修改文件后缀名的方法
Jul 30 PHP
基于ThinkPHP+uploadify+upload+PHPExcel 无刷新导入数据
Sep 23 PHP
PHP中多线程的两个实现方法
Oct 14 PHP
php 判断页面或图片是否经过gzip压缩的方法
Apr 05 PHP
如何用Laravel包含你自己的帮助函数
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将DateTime对象转化为友好时间显示的实现代码
2011/09/20 PHP
PHP包含文件函数include、include_once、require、require_once区别总结
2014/04/05 PHP
ThinkPHP中URL路径访问与模块控制器之间的关系
2014/08/23 PHP
PHP面向对象之里氏替换原则简单示例
2018/04/08 PHP
JavaScript读取中文cookie时的乱码问题的解决方法
2009/10/14 Javascript
css transform 3D幻灯片特效实现步骤解读
2013/03/27 Javascript
JavaScript中Cookie操作实例
2015/01/09 Javascript
浅谈jquery.fn.extend与jquery.extend区别
2015/07/13 Javascript
text-align:justify实现文本两端对齐 兼容IE
2015/08/19 Javascript
jQuery动态添加及删除表单上传元素的方法(附demo源码下载)
2016/01/15 Javascript
JS中的二叉树遍历详解
2016/03/18 Javascript
jQuery实现点击按钮文字变成input框点击保存变成文字
2016/05/09 Javascript
Javascript小技能总结(推荐)
2016/06/02 Javascript
jQuery实现根据滚动条位置加载相应内容功能
2016/07/18 Javascript
通过命令行生成vue项目框架的方法
2017/07/12 Javascript
Angular4 ElementRef的应用
2018/02/26 Javascript
详解在Vue中使用TypeScript的一些思考(实践)
2018/07/06 Javascript
小程序实现列表删除功能
2018/10/30 Javascript
vue模块拖拽实现示例代码
2019/03/09 Javascript
node后端服务保活的实现
2019/11/10 Javascript
vue 路由守卫(导航守卫)及其具体使用
2020/02/25 Javascript
微信小程序 wx.getUserInfo引导用户授权问题实例分析
2020/03/09 Javascript
Python实现Const详解
2015/01/27 Python
浅谈Python实现Apriori算法介绍
2017/12/20 Python
python自动登录12306并自动点击验证码完成登录的实现源代码
2018/04/25 Python
Python变量格式化输出实现原理解析
2020/08/06 Python
python中二分查找法的实现方法
2020/12/06 Python
python爬虫利器之requests库的用法(超全面的爬取网页案例)
2020/12/17 Python
数学系个人求职信范文
2014/01/30 职场文书
我为自己代言广告词
2014/03/18 职场文书
副科级后备干部考察材料
2014/05/15 职场文书
企业演讲稿范文大全
2014/05/20 职场文书
音乐教师个人工作总结
2015/02/06 职场文书
坚持不是死撑,更重要的是心态
2019/08/19 职场文书
uniapp 微信小程序 自定义tabBar 导航
2022/04/22 Javascript
Mysql开启外网访问
2022/05/15 MySQL