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生成网页快照 不用COM不用扩展.
Feb 11 PHP
Codeigniter实现智能裁剪图片的方法
Jun 12 PHP
PHP统计nginx访问日志中的搜索引擎抓取404链接页面路径
Jun 30 PHP
ThinkPHP之用户注册登录留言完整实例
Jul 22 PHP
php实现mysql备份恢复分卷处理的方法
Dec 26 PHP
支付宝接口开发集成支付环境小结
Mar 17 PHP
在Mac上编译安装PHP7的开发环境
Jul 28 PHP
1亿条数据如何分表100张到Mysql数据库中(PHP)
Jul 29 PHP
php将print_r处理后的数据还原为原始数组的解决方法
Nov 02 PHP
PHP laravel中的多对多关系实例详解
Jun 07 PHP
Laravel中使用Queue的最基本操作教程
Dec 27 PHP
yii2.0框架场景的简单使用示例
Jan 25 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的header和asp中的redirect比较
2006/10/09 PHP
使用数据库保存session的方法
2006/10/09 PHP
PHP中HTML标签过滤技巧
2014/01/07 PHP
PHP针对多用户实现更换头像功能
2016/09/04 PHP
PHP中多线程的两个实现方法
2016/10/14 PHP
一个非常实用的php文件上传类
2017/07/04 PHP
jquery获取radio值(单选组radio)
2014/10/16 Javascript
AngularJS内置指令
2015/02/04 Javascript
简单介绍JavaScript中字符串创建的基本方法
2015/07/07 Javascript
三个js循环的关键字示例(for与while)
2016/02/16 Javascript
bootstrap多种样式进度条展示
2016/12/20 Javascript
微信小程序 滚动到某个位置添加class效果实现代码
2017/04/19 Javascript
angular中实现控制器之间传递参数的方式
2017/04/24 Javascript
利用Mongoose让JSON数据直接插入或更新到MongoDB
2017/05/03 Javascript
基于webpack4搭建的react项目框架的方法
2018/06/30 Javascript
vue实现通讯录功能
2018/07/14 Javascript
小程序分页实践之编写可复用分页组件
2019/07/18 Javascript
[03:30]DOTA2完美“圣”典精彩集锦
2016/12/27 DOTA
[50:48]LGD vs CHAOS 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
Python3之读取连接过的网络并定位的方法
2018/04/22 Python
Python 一句话生成字母表的方法
2019/01/02 Python
Django中使用Whoosh进行全文检索的方法
2019/03/31 Python
Python中的几种矩阵乘法(小结)
2019/07/10 Python
tensorflow 重置/清除计算图的实现
2020/01/19 Python
Python模块/包/库安装的六种方法及区别
2020/02/24 Python
Python爬虫爬取新闻资讯案例详解
2020/07/14 Python
意大利奢侈品多品牌集合店:TheDoubleF
2019/08/24 全球购物
售房委托书
2014/08/30 职场文书
社区党的群众路线教育实践活动总结材料
2014/10/31 职场文书
2015年考研复习计划
2015/01/19 职场文书
民主评议党员个人自我评价
2015/03/03 职场文书
请客吃饭开场白
2015/06/01 职场文书
关于军训的感想
2015/08/07 职场文书
Python爬取某拍短视频
2021/06/11 Python
全新239军机修复记
2022/04/05 无线电