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 相关文章推荐
杏林同学录(五)
Oct 09 PHP
一个简单的域名注册情况查询程序
Oct 09 PHP
PHP多线程批量采集下载美女图片的实现代码(续)
Jun 03 PHP
PHP实现视频文件上传完整实例
Aug 28 PHP
php出现web系统多域名登录失败的解决方法
Sep 30 PHP
WordPress开发中的get_post_custom()函数使用解析
Jan 04 PHP
php利用递归实现删除文件目录的方法
Sep 23 PHP
php实现登陆模块功能示例
Oct 20 PHP
Ubuntu VPS中wordpress网站打开时提示”建立数据库连接错误”的解决办法
Nov 03 PHP
PHP 实现字符串翻转(包含中文汉字)的实现代码
Apr 01 PHP
Laravel框架验证码类用法实例分析
Sep 11 PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
Mar 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
php操作sqlserver关于时间日期读取的小小见解
2009/11/29 PHP
PHP 第三节 变量介绍
2012/04/28 PHP
浅析php中jsonp的跨域实例
2013/06/21 PHP
二进制交叉权限微型php类分享
2014/02/07 PHP
PHP生成图片验证码、点击切换实例
2014/06/25 PHP
discuz目录文件资料汇总
2014/12/30 PHP
php基于Redis消息队列实现的消息推送的方法
2018/11/28 PHP
IE中直接运行显示当前网页中的图片 推荐
2006/08/31 Javascript
ajax 文件上传应用简单实现
2009/03/03 Javascript
javascript基础之查找元素的详细介绍(访问节点)
2013/07/05 Javascript
js使用for循环查询数组中是否存在某个值
2014/08/12 Javascript
jQuery Validate表单验证入门学习
2015/12/18 Javascript
原生js的RSA和AES加密解密算法
2016/10/08 Javascript
input输入密码变黑点密文的实现方法
2017/01/09 Javascript
详谈$.data()的用法和作用
2017/02/13 Javascript
EasyUI Datebox 日期验证之开始日期小于结束时间
2017/05/19 Javascript
JS实现的文字间歇循环滚动效果完整示例
2018/02/13 Javascript
基于vue-cli npm run build之后vendor.js文件过大的解决方法
2018/09/27 Javascript
JS实现的简单tab切换功能完整示例
2019/06/20 Javascript
vue-cli3跨域配置的简单方法
2019/09/06 Javascript
改变layer confirm弹窗按钮的颜色方法
2019/09/12 Javascript
[01:21]DOTA2新纪元-7.0新版本即将开启!
2016/12/11 DOTA
[33:28]完美世界DOTA2联赛PWL S3 PXG vs GXR 第三场 12.19
2020/12/24 DOTA
Python的Bottle框架中返回静态文件和JSON对象的方法
2015/04/30 Python
Python 获取div标签中的文字实例
2018/12/20 Python
Python中的类与类型示例详解
2019/07/10 Python
python中@property和property函数常见使用方法示例
2019/10/21 Python
Python如何读写二进制数组数据
2020/08/01 Python
Biblibili视频投稿接口分析并以Python实现自动投稿功能
2021/02/05 Python
Python 爬取淘宝商品信息栏目的实现
2021/02/06 Python
Mankind西班牙男士护肤品网站:购买皮肤护理、护发和剃须
2017/04/27 全球购物
运动会演讲稿50字
2014/08/25 职场文书
2014年医务科工作总结
2014/12/18 职场文书
老公保证书
2015/01/17 职场文书
Oracle更换为MySQL遇到的问题及解决
2021/05/21 Oracle
Mysql数据库group by原理详解
2022/07/07 MySQL