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日期转时间戳,指定日期转换成时间戳
Jul 17 PHP
解析PHP处理换行符的问题 \r\n
Jun 13 PHP
php读取文件内容的几种方法详解
Jun 26 PHP
php打开远程文件的方法和风险及解决方法
Nov 12 PHP
php中 ob_start等函数截取标准输出的方法
Jun 22 PHP
PHP连接MYSQL数据库实例代码
Jan 20 PHP
PHP面试常用算法(推荐)
Jul 22 PHP
php基于环形链表解决约瑟夫环问题示例
Nov 07 PHP
php合并数组并保留键值的实现方法
Mar 12 PHP
laravel通过a标签从视图向控制器实现传值
Oct 15 PHP
php测试kafka项目示例
Feb 06 PHP
Thinkphp极验滑动验证码实现步骤解析
Nov 24 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
POSIX 风格和兼容 Perl 风格两种正则表达式主要函数的类比(preg_match, preg_replace, ereg, ereg_replace)
2010/10/12 PHP
领悟php接口中interface存在的意义
2013/06/27 PHP
PHP计算2点经纬度之间的距离代码
2013/08/12 PHP
Yii开启片段缓存的方法
2016/03/28 PHP
PHP执行linux命令6个函数代码实例
2020/11/24 PHP
jquery 学习之二 属性(html()与html(val))
2010/11/25 Javascript
javascript中方便增删改cookie的一个类
2012/10/11 Javascript
js实现拉伸拖动iframe的具体代码
2013/08/03 Javascript
jQuery学习笔记之toArray()
2014/06/09 Javascript
cookie的secure属性详解
2015/04/08 Javascript
js仿淘宝和百度文库的评分功能
2016/05/15 Javascript
关于Jquery中的事件绑定总结
2016/10/26 Javascript
如何去除vue项目中的#及其ie9兼容性
2018/01/11 Javascript
解决Vue 通过下表修改数组,页面不渲染的问题
2018/03/08 Javascript
详解js删除数组中的指定元素
2018/10/31 Javascript
浅谈JS中this在各个场景下的指向
2019/08/14 Javascript
vue+element表格导出为Excel文件
2019/09/26 Javascript
jQuery实现雪花飘落效果
2020/08/02 jQuery
[05:31]DOTA2英雄梦之声_第04期_光之守卫
2014/06/23 DOTA
Python 实现字符串中指定位置插入一个字符
2018/05/02 Python
python调用百度语音识别api
2018/08/30 Python
Python 实现域名解析为ip的方法
2019/02/14 Python
python读取txt文件并取其某一列数据的示例
2019/02/19 Python
创建Shapefile文件并写入数据的例子
2019/11/26 Python
详解pycharm连接不上mysql数据库的解决办法
2020/01/10 Python
用python介绍4种常用的单链表翻转的方法小结
2020/02/24 Python
Python描述数据结构学习之哈夫曼树篇
2020/09/07 Python
python中@property的作用和getter setter的解释
2020/12/22 Python
详解CSS3弹性伸缩盒
2020/09/21 HTML / CSS
捷克体育用品购物网站:D-sport
2017/12/28 全球购物
汽车工程专业应届生求职信
2013/10/19 职场文书
大学生个人实习的自我评价
2014/02/15 职场文书
五星级酒店宣传口号
2015/12/25 职场文书
廉洁自律准则学习心得体会
2016/01/13 职场文书
医学生自荐信范文(2016精选篇)
2016/01/28 职场文书
Python中如何处理常见报错
2022/01/18 Python