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动态变静态原理
Nov 25 PHP
PHP脚本中include文件出错解决方法
Nov 20 PHP
Apache2中实现多网站域名绑定的实现方法
Jun 01 PHP
用PHP和Shell写Hadoop的MapReduce程序
Apr 15 PHP
php找出指定范围内回文数且平方根也是回文数的方法
Mar 23 PHP
yii实现使用CUploadedFile上传文件的方法
Dec 28 PHP
简单介绍PHP非阻塞模式
Mar 03 PHP
详解PHP的Yii框架的运行机制及其路由功能
Mar 17 PHP
Smarty模板简单配置与使用方法示例
May 23 PHP
php使用Jpgraph创建折线图效果示例
Feb 15 PHP
PHP实现模拟http请求的方法分析
Dec 20 PHP
PHP架构及原理知识点详解
Dec 22 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程序的方法
2009/03/09 PHP
php 保留小数点
2009/04/21 PHP
PHP删除HTMl标签的实现代码
2013/06/30 PHP
自己写了一个php检测文件编码的函数
2014/04/21 PHP
php+MySQL判断update语句是否执行成功的方法
2014/08/28 PHP
Javascript中的isNaN函数使用说明
2011/11/10 Javascript
五段实用的js高级技巧
2011/12/20 Javascript
jQuery模拟超链接点击效果代码
2013/04/21 Javascript
自己封装的javascript事件队列函数版
2014/06/12 Javascript
Node.js下自定义错误类型详解
2016/10/17 Javascript
vue2.0使用v-for循环制作多级嵌套菜单栏
2018/06/25 Javascript
详解js常用分割取字符串的方法
2019/05/15 Javascript
webpack 代码分离优化快速指北
2019/05/18 Javascript
微信小程序基于Taro的分享图片功能实践详解
2019/07/12 Javascript
vue制作抓娃娃机的示例代码
2020/04/17 Javascript
如何使用JavaScript实现无缝滚动自动播放轮播图效果
2020/08/20 Javascript
python 多线程应用介绍
2012/12/19 Python
python实现的二叉树算法和kmp算法实例
2014/04/25 Python
python求crc32值的方法
2014/10/05 Python
python中偏函数partial用法实例分析
2015/07/08 Python
Python制作爬虫采集小说
2015/10/25 Python
python编写简单爬虫资料汇总
2016/03/22 Python
Python自动化部署工具Fabric的简单上手指南
2016/04/19 Python
Python2包含中文报错的解决方法
2018/07/09 Python
python中如何使用insert函数
2020/01/09 Python
python字符串下标与切片及使用方法
2020/02/13 Python
浅谈spring boot 集成 log4j 解决与logback冲突的问题
2020/02/20 Python
服务器端jupyter notebook映射到本地浏览器的操作
2020/04/14 Python
Python的历史与优缺点整理
2020/05/26 Python
FLIR美国官网:热成像, 夜视和红外摄像系统
2018/07/13 全球购物
与UNIX有关的几个名词
2015/09/17 面试题
2014年秋季开学寄语
2014/08/02 职场文书
基层党员对照检查材料
2014/09/24 职场文书
十一国庆节“向国旗敬礼”主题班会活动方案
2014/09/27 职场文书
幼儿园大班教师个人总结
2015/02/05 职场文书
2015年妇幼保健工作总结
2015/05/19 职场文书