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生成HTML静态页面实例代码
Aug 31 PHP
网站用php实现paypal整合方法
Nov 28 PHP
PHP简洁函数(PHP简单明了函数语法)
Jun 10 PHP
浅析PHP Socket技术
Aug 02 PHP
php中session使用示例
Mar 29 PHP
php写的AES加密解密类分享
Jun 20 PHP
php使用NumberFormatter格式化货币的方法
Mar 21 PHP
使用Appcan客户端自动更新PHP版本号(全)
Jul 31 PHP
PHP实现递归复制整个文件夹的类实例
Aug 03 PHP
Zend Framework教程之响应对象的封装Zend_Controller_Response实例详解
Mar 07 PHP
CI框架整合widget(页面格局)的方法
May 17 PHP
详解thinkphp中的volist标签
Jan 15 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日历程序
2006/12/06 PHP
PHP is_dir() 判断给定文件名是否是一个目录
2010/05/10 PHP
国产PHP开发框架myqee新手快速入门教程
2014/07/14 PHP
php 批量查询搜狗sogou代码分享
2015/05/17 PHP
php 使用curl模拟登录人人(校内)网的简单实例
2016/06/06 PHP
innerHTML 和 getElementsByName 在IE下面的bug 的解决
2010/04/09 Javascript
jquery 插件学习(二)
2012/08/06 Javascript
javascript验证上传文件的类型限制必须为某些格式
2013/11/14 Javascript
javascript中call,apply,bind的用法对比分析
2015/02/12 Javascript
BootStrap的table表头固定tbody滚动的实例代码
2016/08/24 Javascript
JavaScript数组复制详解
2017/02/02 Javascript
JS中将多个逗号替换为一个逗号的实现代码
2017/06/23 Javascript
微信小程序 五星评分的实现实例
2017/08/04 Javascript
JavaScript指定断点操作实例教程
2018/09/18 Javascript
vue动画效果实现方法示例
2019/03/18 Javascript
微信小程序 image组件遇到的问题
2019/05/28 Javascript
vue项目中实现缓存的最佳方案详解
2019/07/11 Javascript
关于Vue中axios的封装实例详解
2019/10/20 Javascript
JQuery常用简单动画操作方法回顾与总结
2019/12/07 jQuery
js实现炫酷光感效果
2020/09/05 Javascript
[07:03]显微镜下的DOTA2第九期——430圣堂刺客杀戮秀
2014/06/20 DOTA
Python基于time模块求程序运行时间的方法
2017/09/18 Python
Python设计模式之代理模式简单示例
2018/01/09 Python
python识别文字(基于tesseract)代码实例
2019/08/24 Python
深入浅析Python科学计算库Scipy及安装步骤
2019/10/12 Python
解决Jupyter NoteBook输出的图表太小看不清问题
2020/04/16 Python
Python全局变量与global关键字常见错误解决方案
2020/10/05 Python
Python学习工具jupyter notebook安装及用法解析
2020/10/23 Python
详解CSS3的opacity属性设置透明效果的用法
2016/05/09 HTML / CSS
HTML5学习心得总结(推荐)
2016/07/08 HTML / CSS
腾讯公司的一个sql题
2013/01/22 面试题
大学生求职信范文应怎么写
2014/01/01 职场文书
争先创优演讲稿
2014/09/15 职场文书
2015年安置帮教工作总结
2015/05/22 职场文书
职场新人刚入职工作总结该怎么写?
2019/05/15 职场文书
eval(cmd)与eval($cmd)的区别与联系
2021/07/07 PHP