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 相关文章推荐
分页显示Oracle数据库记录的类之二
Oct 09 PHP
php木马攻击防御之道
Mar 24 PHP
第三章 php操作符与控制结构代码
Dec 30 PHP
测试php函数的方法
Nov 13 PHP
php遍历目录输出目录及其下的所有文件示例
Jan 27 PHP
ThinkPHP中的create方法与自动令牌验证实例教程
Aug 22 PHP
PHP中使用SimpleXML检查XML文件结构实例
Jan 07 PHP
PHP的Yii框架中过滤器相关的使用总结
Mar 29 PHP
Yii2验证器(Validator)用法分析
Jul 23 PHP
Android AsyncTack 异步任务实例详解
Nov 02 PHP
PHP编程获取图片的主色调的方法【基于Imagick扩展】
Aug 02 PHP
php实现微信公众号创建自定义菜单功能的实例代码
Jun 11 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 session应用实例 登录验证
2009/03/16 PHP
用php实现的下载css文件中的图片的代码
2010/02/08 PHP
基于php权限分配的实现代码
2013/04/28 PHP
不使用php api函数实现数组的交换排序示例
2014/04/13 PHP
PHP实现简单搜歌的方法
2015/07/28 PHP
php7 新增功能实例总结
2020/05/25 PHP
Aster vs KG BO3 第一场2.18
2021/03/10 DOTA
IE和Firefox的Javascript兼容性总结[推荐收藏]
2011/10/19 Javascript
最佳的addEvent事件绑定是怎样诞生的
2011/10/24 Javascript
JavaScript自执行闭包的小例子
2013/06/29 Javascript
Jquery取得iframe下内容的方法
2013/11/18 Javascript
Google (Local) Search API的简单使用介绍
2013/11/28 Javascript
js时间比较示例分享(日期比较)
2014/03/05 Javascript
JavaScript简单修改窗口大小的方法
2015/08/03 Javascript
JS实现图片垂直居中显示小结
2016/12/13 Javascript
ajax前台后台跨域请求处理方式
2018/02/08 Javascript
浅谈HTTP 缓存的那些事儿
2018/10/17 Javascript
Vue源码分析之Vue实例初始化详解
2019/08/25 Javascript
vue之延时刷新实例
2019/11/14 Javascript
在Vue中使用Echarts可视化库的完整步骤记录
2020/11/18 Vue.js
快速了解Python相对导入
2018/01/12 Python
Python实现分段线性插值
2018/12/17 Python
python图像处理入门(一)
2019/04/04 Python
Python数据正态性检验实现过程
2020/04/18 Python
Python selenium使用autoIT上传附件过程详解
2020/05/26 Python
python使用matplotlib的savefig保存时图片保存不完整的问题
2021/01/08 Python
Bulk Powders意大利:运动补充在线商店
2019/02/09 全球购物
巴西儿童时尚购物网站:Dinda
2019/08/14 全球购物
总经理岗位职责范本
2014/02/02 职场文书
食堂采购员岗位职责
2014/03/17 职场文书
好听的队名和口号
2014/06/09 职场文书
生日答谢词
2015/01/05 职场文书
小学新教师个人总结
2015/02/05 职场文书
小学教师教育随笔
2015/08/14 职场文书
Mysql实现主从配置和多主多从配置
2021/06/02 MySQL
JPA如何使用entityManager执行SQL并指定返回类型
2021/06/15 Java/Android