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 pcntl_fork和pcntl_fork 的用法
Apr 13 PHP
PHP日期时间函数的高级应用技巧
May 16 PHP
php抓取https的内容的代码
Apr 06 PHP
PHP取余函数介绍MOD(x,y)与x%y
May 15 PHP
php_screw安装使用教程(另一个PHP代码加密实现)
May 29 PHP
ThinkPHP多语言支持与多模板支持概述
Aug 22 PHP
PHP速成大法
Jan 30 PHP
mysql_connect localhost和127.0.0.1的区别(网络层阐述)
Mar 26 PHP
php使用socket post数据到其它web服务器的方法
Jun 02 PHP
PHP json_encode() 函数详解及中文乱码问题
Nov 05 PHP
PHP执行shell脚本运行程序不产生core文件的方法
Dec 28 PHP
laravel5.4生成验证码的实例讲解
Aug 05 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
第十四节 命名空间 [14]
2006/10/09 PHP
CURL的学习和应用(附多线程实现)
2013/06/03 PHP
PHP面向对象之旅:深入理解static变量与方法
2014/01/06 PHP
PHP中round()函数对浮点数进行四舍五入的方法
2014/11/19 PHP
php使用mysqli向数据库添加数据的方法
2015/03/20 PHP
asp(javascript)全角半角转换代码 dbc2sbc
2009/08/06 Javascript
jQuery 解析xml文件
2009/08/09 Javascript
Jquery cookie操作代码
2010/03/14 Javascript
javascript奇异的arguments分析
2010/10/20 Javascript
jQuery中outerWidth()方法用法实例
2015/01/19 Javascript
基于jQuery实现的旋转彩圈实例
2015/06/26 Javascript
JavaScript几种数组去掉重复值的方法推荐
2016/04/12 Javascript
详细总结Javascript中的焦点管理
2016/09/17 Javascript
详解用vue编写弹出框组件
2017/07/04 Javascript
详解vue微信网页授权最终解决方案
2019/06/16 Javascript
深入了解JavaScript 防抖和节流
2019/09/12 Javascript
vue 实现锚点功能操作
2020/08/10 Javascript
v-slot和slot、slot-scope之间相互替换实例
2020/09/04 Javascript
[02:38]DOTA2亚洲邀请赛 IG战队巡礼
2015/02/03 DOTA
Python的一些用法分享
2012/10/07 Python
python算法学习之计数排序实例
2013/12/18 Python
python3 实现的人人影视网站自动签到
2016/06/19 Python
深入理解Django中内置的用户认证
2017/10/06 Python
python的文件操作方法汇总
2017/11/10 Python
python开发准备工作之配置虚拟环境(非常重要)
2019/02/11 Python
Python Selenium库的基本使用教程
2021/01/04 Python
工程造价与财务管理专业应届生求职信
2013/10/06 职场文书
技校个人求职信范文
2014/01/25 职场文书
统计系教授推荐信
2014/02/28 职场文书
求职面试个人自我评价
2014/02/28 职场文书
日语专业毕业生自荐书
2014/06/18 职场文书
八一建军节主持词
2015/07/01 职场文书
2015年高中生国庆节演讲稿
2015/07/30 职场文书
小学学习委员竞选稿
2015/11/20 职场文书
Python中文分词库jieba(结巴分词)详细使用介绍
2022/04/07 Python
win10怎么设置右下角图标不折叠?Win10设置右下角图标不折叠的方法
2022/07/15 数码科技