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格式化工具Beautify PHP小小BUG
Apr 24 PHP
php preg_match_all结合str_replace替换内容中所有img
Oct 11 PHP
字母顺序颠倒而单词顺序不变的php代码
Aug 08 PHP
PHP多个版本的分析解释
Jul 21 PHP
PHP类与对象中的private访问控制的疑问
Nov 01 PHP
基于header的一些常用指令详解
Jun 06 PHP
php异常处理方法实例汇总
Jun 24 PHP
php实现编辑和保存文件的方法
Jul 20 PHP
php简单判断文本编码的方法
Jul 30 PHP
PHP+redis实现添加处理投票的方法
Nov 14 PHP
php连接MSsql server的五种方法总结
Mar 04 PHP
PHP 访问数据库配置通用方法(json)
May 20 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生成静态HTML页面最简单方法示例
2015/04/09 PHP
使用PHP实现生成HTML静态页面
2015/11/18 PHP
Yii2前后台分离及migrate使用(七)
2016/05/04 PHP
PHP中检索字符串的方法分析【strstr与substr_count方法】
2017/02/17 PHP
浅谈PHP的排列组合(如输入a,b,c 输出他们的全部组合)
2017/03/14 PHP
laravel 5.4 + vue + vux + element的环境搭配过程介绍
2018/04/26 PHP
laravel-admin自动生成模块,及相关基础配置方法
2019/10/08 PHP
jQuery 添加/移除CSS类实现代码
2010/02/11 Javascript
SOSO地图JS画出标注和中心点以html形式运行
2013/08/09 Javascript
IE下window.onresize 多次调用与死循环bug处理方法介绍
2013/11/12 Javascript
javascript实现table表格隔行变色的方法
2015/05/13 Javascript
JS中的==运算: [''] == false —&gt;true
2016/07/24 Javascript
JS批量替换内容中关键词为超链接
2017/02/20 Javascript
JS数组去重常用方法实例小结【4种方法】
2018/05/28 Javascript
使用post方法实现json往返传输数据的方法
2019/03/30 Javascript
利用vue-i18n实现多语言切换效果的方法
2019/06/19 Javascript
JavaScript实现留言板案例
2020/03/17 Javascript
Python IDE PyCharm的基本快捷键和配置简介
2015/11/04 Python
Python的Django中将文件上传至七牛云存储的代码分享
2016/06/03 Python
python strip() 函数和 split() 函数的详解及实例
2017/02/03 Python
linecache模块加载和缓存文件内容详解
2018/01/11 Python
Tensorflow分类器项目自定义数据读入的实现
2019/02/05 Python
Python面向对象之类和实例用法分析
2019/06/08 Python
Python序列化与反序列化pickle用法实例
2019/11/11 Python
Keras 快速解决OOM超内存的问题
2020/06/11 Python
python中使用np.delete()的实例方法
2021/02/01 Python
PyCharm2020.3.2安装超详细教程
2021/02/08 Python
美国最大的网上冲印店:Shutterfly
2017/01/01 全球购物
美国羊皮公司:Overland
2018/01/15 全球购物
Hush Puppies澳大利亚官网:舒适的男女休闲和正装鞋
2019/08/24 全球购物
阿拉伯时尚购物网站:Nisnass
2021/02/07 全球购物
《小小雨点》教学反思
2014/02/18 职场文书
2014机关干部学习“焦裕禄精神”思想汇报
2014/09/19 职场文书
学校副校长四风对照检查材料整改措施
2014/09/25 职场文书
感恩教育主题班会
2015/08/12 职场文书
Python-OpenCV教程之图像的位运算详解
2021/06/21 Python