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 相关文章推荐
cmd下运行php脚本
Nov 25 PHP
php中用memcached实现页面防刷新功能
Aug 19 PHP
php通过asort()给关联数组按照值排序的方法
Mar 18 PHP
Laravel 5框架学习之Blade 简介
Apr 08 PHP
Laravel 5框架学习之用户认证
Apr 09 PHP
人脸识别测颜值、测脸龄、测相似度微信接口
Apr 07 PHP
php 数组随机取值的简单实例
May 23 PHP
PHP自定义函数获取URL中一级域名的方法
Aug 23 PHP
PHP之将POST数据转化为字符串的实现代码
Nov 03 PHP
php正则提取html图片(img)src地址与任意属性的方法
Feb 08 PHP
PHP多维数组排序array详解
Nov 21 PHP
Thinkphp 3.2框架使用Redis的方法详解
Oct 24 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保存二进制原始数据为图片的程序代码
2014/10/14 PHP
如何打开php的gd2库
2017/02/09 PHP
php实例化一个类的具体方法
2019/09/19 PHP
解决laravel-admin 自己新建页面里 js 需要刷新一次的问题
2019/10/03 PHP
让FireFox支持innerText的实现代码
2009/12/01 Javascript
IE之动态添加DOM节点触发window.resize事件
2010/07/27 Javascript
jQuery中dequeue()方法用法实例
2014/12/29 Javascript
jQuery中children()方法用法实例
2015/01/07 Javascript
jquery实现textarea 高度自适应
2015/03/11 Javascript
JavaScript中的Promise使用详解
2015/06/24 Javascript
Node.js中JavaScript操作MySQL的常用方法整理
2016/03/01 Javascript
jQuery实现内容定时切换效果完整实例
2016/04/06 Javascript
JavaScript基础知识点归纳(推荐)
2016/07/09 Javascript
JS遍历对象属性的方法示例
2017/01/10 Javascript
jQuery+pjax简单示例汇总
2017/04/21 jQuery
JavaScript实现QQ聊天消息展示和评论提交功能
2017/05/22 Javascript
[03:55]2014DOTA2国际邀请赛 Fnatic经理采访赢DK在情理之中
2014/07/10 DOTA
[01:21]辉夜杯战队访谈宣传片—CDEC
2015/12/25 DOTA
[00:33]2016完美“圣”典风云人物:BurNIng宣传片
2016/12/10 DOTA
Python探索之实现一个简单的HTTP服务器
2017/10/28 Python
Python实现mysql数据库更新表数据接口的功能
2017/11/19 Python
pip install命令安装扩展库整理
2021/03/02 Python
用css3实现转换过渡和动画效果
2020/03/13 HTML / CSS
HTML5实现的图片无限加载的瀑布流效果另带边框圆角阴影
2014/03/07 HTML / CSS
澳大利亚女性快速时尚零售商:Ally Fashion
2018/04/25 全球购物
清洁工表扬信
2014/01/08 职场文书
关于赌博的检讨书
2014/01/08 职场文书
项目计划书范文
2014/01/09 职场文书
护士检查书
2014/01/17 职场文书
销售活动策划方案
2014/08/26 职场文书
夫妻分居协议书范本(有子女版)
2014/11/01 职场文书
2014年财政局工作总结
2014/12/09 职场文书
汽车修理厂管理制度
2015/08/05 职场文书
浅谈mysql执行过程以及顺序
2021/05/12 MySQL
Python趣味挑战之实现简易版音乐播放器
2021/05/28 Python
Python-OpenCV实现图像缺陷检测的实例
2021/06/11 Python