有关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");//gfedaba

function reverse($str){

if(strlen($str)>0){

reverse(substr($str,1));

echo substr($str,0,1);

return;

}

}

reverse("abcdefg");//gfedaba

二、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");

//gfedaba

function reverse($str){

if(strlen($str)>0){

reverse(substr($str,1));

echo substr($str,0,1); return;

}

}

reverse("abcdefg");//gfedaba

php递归函数有时可以循环替代,建议当不能用循环替代时再用,因为用循环我们更容易理解,更不容易出错。 php递归函数 php支付递归函数,递归函数就是调用自己本身,这些函数特别适用于浏览动态数据结构,例如树和列表。 几乎没有web应用程序要求使用复杂的数据结构。

例子:

复制代码 代码示例:0) reverse_r(substr($str,1)); echo substr($str,0,1); return; } ?>

这个程序清单中实现两个函数,这两个函数都可以相反的顺序打印字符串的内容 函数reversr_r是通过递归实现的,而函数reverse_i()是通过循环实现的。

以上就是php递归函数怎么用才有效?php递归函数典型例子 的内容,更多相关内容请关注PHP中文网(www.php.cn)!

相关内容推荐:

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

php如何优化递归函数,php递归函数怎么用才有效?php递归函数典型例子相关推荐

  1. c语言递归函数检测回文,在C中使用递归函数的回文测试

    我试图编写用于测试字符串的程序,如果它是回文或不是,但我总是得到输出,因为它不是一个.我的代码有什么问题?在C中使用递归函数的回文测试 #include #include int is_palindr ...

  2. python编写递归函数m(i)计算以下级数_编写递归函数getpower

    编写递归函数 GetPower(int 实现输入输出. x, int y)计算 ... 18 日验报告日期 2014 年 4 月 19 日告退发 ( 订正 . 重做 ) 教师审批签字 一.实验目的 学 ...

  3. python中的递归函数是什么_讲解Python中的递归函数

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  4. 基于Kubernetes支撑的项目,环境规划,构建优化,监控报警怎么做才好?

    前言 随着云计算技术的不断发展,容器和Kubernetes已经成为云原生应用的基石,容器的周边生态也日益成熟,微服务.服务网格.DevOps等技术相继涌现. 容器的出现,推动了软件开发.测试.部署.运 ...

  5. 转载自笨木头的Cocos2d-x Auto-batching分析

    今天早晨学习cpp-tests物理引擎实例,顺便学习了Cocos2d-x 3.0新引入的Auto-batching技术.期间,在结合秦春林著作有关论述的同时学习了笨木头同学的文章,完整引用如下: 近两 ...

  6. IBM WebSphere 开发者技术期刊: 最重要的 Java EE 最佳实践

    级别: 初级 Keys Botzum, 高级技术人员 , IBM Kyle Brown, 杰出工程师, IBM Ruth Willenborg (rewillen@us.ibm.com), 高级技术人 ...

  7. python静态递归函数_Python递归函数相关

    函数中调用其他函数是解决实际问题中常用方法,递归函数便是函数在运行过程中调用自身的函数.它像是循环的另一种表达方式,不过相较于写循环,递归函数封装性较好.可读性较强.在解决一些循环问题时,使用递归函数 ...

  8. python递归函数例题_递归案例python

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 而对应的中文翻译 "递归" 却表达了两个意思:"递 ...

  9. 【Python】什么是递归函数?

    目录 1.递归函数的概念 2.递归函数的特点 3.递归函数解决实际问题 3.1.计算n!=1*2*3...*n 3.2.斐波那契数列 0, 1, 1, 2, 3, 5, 8, 13, 21, ··· ...

  10. Python非单向递归函数如何返回全部结果?这个经典的背包问题给出了答案

    递归( recursion)是一种神奇的编程技巧,可以大幅简化代码,使之看起来更加简洁.然而递归设计却非常抽象,不容易掌握.通常,我们都是自上而下的思考问题, 递归则是自下而上的解决问题--这就是递归 ...

最新文章

  1. 人工脑连接体:类脑人工智能的奇点时刻来临
  2. 企业分布式微服务云SpringCloud SpringBoot mybatis (九)Spring Boot多数据源配置与使用(JdbcTemplate支持)...
  3. 学python多长时间能够精通-学Python多长时间?老男孩Python技术培训
  4. 程序编码应保持良好的规范(C#)
  5. html伸缩布局,CSS3 伸缩布局(一)
  6. arduino编程时加{}报错_使用Arduino开发板时最常见的10个错误
  7. 解决jQuery中dbclick事件触发两次click事件
  8. 不确定单机械臂的自适应反步控制建模与仿真
  9. 【机器学习】21个机器学习面试问答
  10. AD18 SCH Filter面板——智能查找功能
  11. Java调用支付宝身份认证接口
  12. 网络管理——直接网络管理规范
  13. Tesseract-OCR引擎的安装
  14. python教程 -- 廖雪峰
  15. 等腰杨辉三角C语言实现
  16. Nginx——缓存配置
  17. 恢复误删sqlserver数据库表中的数据
  18. ubuntu 外接VGA显示 不能调整为正确的分辨率
  19. 西安交通大学城市学院计算机课本,西安交通大学城市学院计算机系赴陕西科技大学进行专业课“课程思政”教学交流...
  20. 判断文件编码格式是否是UTF-8还是GBK格式

热门文章

  1. 最长回文字串--动态规划
  2. Spring对 JDBC 的支持,JdbcTemplate类的使用
  3. 第一百零六节,JavaScript变量作用域及内存
  4. Linux下编译安装redis,详细教程
  5. 从此使用linux系统,但是QQ是必不可少的!!该篇文章方法成功!!!已验证!!!!!...
  6. 为什么要有环回路由(zz)
  7. java 创建消息队列_java - 在Java中动态创建异步消息队列 - 堆栈内存溢出
  8. 对于相同Bean,在父应用上下文中定义的切面,在子应用上下文中会生效吗?
  9. 并发编程常见面试题总结三
  10. numpy.argmin 使用