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&amp;&amp;mysql)一
Oct 09 PHP
Ajax PHP分页演示
Jan 02 PHP
《PHP编程最快明白》第四讲:日期、表单接收、session、cookie
Nov 01 PHP
PHP中英混合字符串截取函数代码
Jul 17 PHP
php数组函数序列之array_intersect() 返回两个或多个数组的交集数组
Nov 10 PHP
PHP代码网站如何防范SQL注入漏洞攻击建议分享
Mar 01 PHP
深入解析PHP的引用计数机制
Jun 14 PHP
PHP实现类似于C语言的文件读取及解析功能
Sep 01 PHP
PHP实现求连续子数组最大和问题2种解决方法
Dec 26 PHP
PHP实现的简单留言板功能示例【基于thinkPHP框架】
Dec 07 PHP
Laravel框架实现的rbac权限管理操作示例
Jan 16 PHP
PHP开发实现快递查询功能详解
Apr 08 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
PHP5中的时间相差8小时的解决办法
2008/03/28 PHP
php 接口类与抽象类的实际作用
2009/11/26 PHP
PHP的RSA加密解密方法以及开发接口使用
2018/02/11 PHP
PDO::rollBack讲解
2019/01/29 PHP
学习ExtJS accordion布局
2009/10/08 Javascript
Jquery UI震动效果实现原理及步骤
2013/02/04 Javascript
解读JavaScript中 For, While与递归的用法
2013/05/07 Javascript
兼容Firefox的Javascript XSLT 处理XML文件
2014/12/31 Javascript
javascript二维数组转置实例
2015/01/22 Javascript
JS获得选取checkbox整行数据的方法
2015/01/28 Javascript
jquery中toggle函数交替使用问题
2015/06/22 Javascript
浅谈JavaScript中的对象及Promise对象的实现
2015/11/15 Javascript
实例详解JavaScript获取链接参数的方法
2016/01/01 Javascript
js实现String.Fomat的实例代码
2016/09/02 Javascript
jQuery Easyui datagrid行内实现【添加】、【编辑】、【上移】、【下移】
2016/12/19 Javascript
JS中闭包的经典用法小结(2则示例)
2016/12/28 Javascript
Javascript继承机制详解
2017/05/30 Javascript
docker中编译nodejs并使用nginx启动
2017/06/23 NodeJs
JavaScript算法教程之sku(库存量单位)详解
2017/06/29 Javascript
jQuery dateRangePicker插件使用方法详解
2017/07/28 jQuery
解决layui 表单元素radio不显示渲染的问题
2019/09/04 Javascript
纯js+css实现仿移动端淘宝网站的弹出详情框功能
2019/12/29 Javascript
Python实例之wxpython中Frame使用方法
2014/06/09 Python
使用Python的package机制如何简化utils包设计详解
2017/12/11 Python
Python实现的在特定目录下导入模块功能分析
2019/02/11 Python
numpy基础教程之np.linalg
2019/02/12 Python
Python CSS选择器爬取京东网商品信息过程解析
2020/06/01 Python
使用Python实现微信拍一拍功能的思路代码
2020/07/09 Python
浅析几个CSS3常用功能的写法
2014/06/05 HTML / CSS
英国计算机产品零售商:Novatech(定制个人电脑、笔记本电脑、工作站和服务器)
2018/01/28 全球购物
德国内衣、泳装和睡衣网上商店:Bigsize Dessous
2018/07/09 全球购物
应聘医药销售自荐书范文
2014/02/08 职场文书
渔夫的故事教学反思
2014/02/14 职场文书
安全标准化实施方案
2014/02/20 职场文书
迎新生欢迎词
2015/01/23 职场文书
交流会主持词
2015/07/02 职场文书