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 相关文章推荐
dede3.1分页文字采集过滤规则详说(图文教程)续四
Apr 03 PHP
PHP判断搜索引擎蜘蛛并自动记忆到文件的代码
Feb 04 PHP
phpMyAdmin 链接表的附加功能尚未激活问题的解决方法(已测)
Mar 27 PHP
php文件操作实例代码
May 10 PHP
PHP的异常处理类Exception的使用及说明
Jun 13 PHP
php项目中百度 UEditor 简单安装调试和调用
Jul 15 PHP
大家都应该掌握的PHP关联数组使用技巧
Dec 25 PHP
PHP获取昨天、今天及明天日期的方法
Feb 03 PHP
基于PHP实现通过照片获取ip地址
Apr 26 PHP
PHP验证终端类型是否为手机的简单实例
Feb 07 PHP
PHP+redis实现的悲观锁机制示例
Jun 12 PHP
如何通过PHP实现Des加密算法代码实例
May 09 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生成二维码的几种方式整理及使用实例
2013/06/03 PHP
php远程下载类分享
2016/04/13 PHP
javascript 动态修改样式和层叠样式表代码
2010/04/27 Javascript
Web开发者必备的12款超赞jQuery插件
2010/12/03 Javascript
防止浏览器记住用户名及密码的简单实用方法
2013/04/22 Javascript
jquery索引在使用中的一些困惑
2013/10/24 Javascript
js之事件冒泡和事件捕获详细介绍
2013/10/28 Javascript
为jQuery添加Webkit的触摸的方法分享
2014/02/02 Javascript
JS实现简易图片轮播效果的方法
2015/03/25 Javascript
nodejs利用http模块实现银行卡所属银行查询和骚扰电话验证示例
2016/12/30 NodeJs
基于JavaScript实现的折半查找算法示例
2017/04/14 Javascript
微信小程序实现多个按钮toggle功能的实例
2017/06/13 Javascript
二维码图片生成器QRCode.js简单介绍
2017/08/18 Javascript
requireJS模块化实现返回顶部功能的方法详解
2017/10/16 Javascript
js数组常用最重要的方法
2018/02/04 Javascript
JS实现的简单分页功能示例
2018/08/23 Javascript
微信小程序用户位置权限的获取方法(拒绝后提醒)
2018/11/15 Javascript
nodejs使用node-xlsx生成excel的方法示例
2019/08/22 NodeJs
node.js express捕获全局异常的三种方法实例分析
2019/12/27 Javascript
Python的Flask框架中@app.route的用法教程
2015/03/31 Python
python版本的仿windows计划任务工具
2018/04/30 Python
Python 实现try重新执行
2019/12/21 Python
Python多线程操作之互斥锁、递归锁、信号量、事件实例详解
2020/03/24 Python
keras 获取某层的输入/输出 tensor 尺寸操作
2020/06/10 Python
python 通过 pybind11 使用Eigen加速代码的步骤
2020/12/07 Python
为智能设备设计个性化保护套网站:caseable
2017/01/05 全球购物
Farah官方网站:男士服装及配件
2019/11/01 全球购物
乌克兰排名第一的在线旅游超市:Farvater.Travel
2020/01/02 全球购物
汽车专业学生自我评价
2014/01/19 职场文书
药品促销活动方案
2014/02/14 职场文书
2014公安机关纪律作风整顿思想汇报
2014/09/13 职场文书
纪念九一八事变演讲稿:牢记九一八,屈辱怎能忘
2014/09/14 职场文书
总账会计岗位职责
2015/04/02 职场文书
新闻报道稿范文
2015/07/23 职场文书
2016反腐倡廉警示教育心得体会
2016/01/13 职场文书
MySQL窗口函数的具体使用
2021/11/17 MySQL