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和ACCESS写聊天室(三)
Oct 09 PHP
php生成文件
Jan 15 PHP
PHP读取数据库并按照中文名称进行排序实现代码
Jan 29 PHP
PHP设计模式之代理模式的深入解析
Jun 13 PHP
PHP大批量插入数据库的3种方法和速度对比
Jul 08 PHP
PHP GD库生成图像的几个函数总结
Nov 19 PHP
php+mysql实现无限分类实例详解
Jan 15 PHP
php实现复制移动文件的方法
Jul 29 PHP
WordPress中获取指定分类及其子分类下的文章数目
Dec 31 PHP
php mysql数据库操作类(实例讲解)
Aug 06 PHP
laravel框架select2多选插件初始化默认选中项操作示例
Feb 18 PHP
PHP随机生成中文段落示例【测试网站内容时使用】
Apr 26 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
不用mod_rewrite直接用php实现伪静态化页面代码
2008/10/04 PHP
php 远程图片保存到本地的函数类
2008/12/08 PHP
解析PHP的session过期设置
2013/06/29 PHP
fsockopen pfsockopen函数被禁用,SMTP发送邮件不正常的解决方法
2015/09/20 PHP
php mysql PDO 查询操作的实例详解
2017/09/23 PHP
PHP排序二叉树基本功能实现方法示例
2018/05/26 PHP
MSN消息提示类
2006/09/05 Javascript
刷新页面实现方式总结(HTML,ASP,JS)
2008/11/13 Javascript
表单元素的submit()方法和onsubmit事件应用概述
2013/02/01 Javascript
jQuery 三击事件实现代码
2013/09/11 Javascript
JS控制图片翻转示例代码(兼容firefox,ie,chrome)
2013/12/19 Javascript
利用jquery操作Radio方法小结
2014/10/20 Javascript
jQuery的几个我们必须了解的特点
2015/05/03 Javascript
node.js入门实例helloworld详解
2015/12/23 Javascript
JavaScript中windows.open()、windows.close()方法详解
2016/07/28 Javascript
js导出excel文件的简洁方法(推荐)
2016/11/02 Javascript
Node.js的特点详解
2017/02/03 Javascript
Vue 实现展开折叠效果的示例代码
2018/08/27 Javascript
JavaScript自定义超时API代码实例
2020/04/30 Javascript
python list 合并连接字符串的方法
2013/03/09 Python
通过C++学习Python
2015/01/20 Python
Python变量和数据类型详解
2017/02/15 Python
django框架之cookie/session的使用示例(小结)
2018/10/15 Python
python退出命令是什么?详解python退出方法
2018/12/10 Python
浅谈Pycharm中的Python Console与Terminal
2019/01/17 Python
Python代码需要缩进吗
2020/07/01 Python
企业管理部经理岗位职责
2013/12/24 职场文书
学习党的群众路线教育实践活动心得体会范文
2014/11/03 职场文书
党员个人年度总结
2015/02/14 职场文书
2015年酒店服务员工作总结
2015/05/18 职场文书
回复函范文
2015/07/14 职场文书
《花钟》教学反思
2016/02/17 职场文书
干货:如何写好工作总结报告!
2019/05/10 职场文书
让文件路径提取变得更简单的Python Path库
2021/05/27 Python
Java反应式框架Reactor中的Mono和Flux
2021/07/25 Java/Android
尝试使用Python爬取城市租房信息
2022/04/12 Python