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开发中常用的字符串操作函数
Feb 08 PHP
神盾加密解密教程(二)PHP 神盾解密
Jun 08 PHP
ThinkPHP CURD方法之order方法详解
Jun 18 PHP
PHP把MSSQL数据导入到MYSQL的方法
Dec 27 PHP
php单一接口的实现方法
Jun 20 PHP
使用XHGui来测试PHP性能的教程
Jul 03 PHP
详解WordPress中添加和执行动作的函数使用方法
Dec 29 PHP
ECSHOP完美解决Deprecated: preg_replace()报错的问题
May 17 PHP
Android AsyncTack 异步任务实例详解
Nov 02 PHP
解决php写入数据库乱码的问题
Sep 17 PHP
PHP架构及原理知识点详解
Dec 22 PHP
PHP7创建COOKIE和销毁COOKIE的实例方法
Feb 03 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发送get、post请求的6种方法简明总结
2014/07/08 PHP
Laravel 4 初级教程之安装及入门
2014/10/30 PHP
php中的动态调用实例分析
2015/01/07 PHP
简单谈谈php浮点数精确运算
2016/03/10 PHP
php阳历转农历优化版
2016/08/08 PHP
用javascript实现改变TEXTAREA滚动条和按钮的颜色,以及怎样让滚动条变得扁平
2007/04/20 Javascript
JavaScript 字符串处理函数使用小结
2010/12/02 Javascript
Jquery多选下拉列表插件jquery multiselect功能介绍及使用
2013/05/24 Javascript
利用NodeJS的子进程(child_process)调用系统命令的方法分享
2013/06/05 NodeJs
js 弹出新页面避免被浏览器、ad拦截的一种新方法
2014/04/30 Javascript
JavaScript设置获取和设置属性的方法
2015/03/04 Javascript
javascript实现网页中涉及的简易运动(改变宽高、透明度、位置)
2015/11/29 Javascript
微信小程序 图片等比例缩放(图片自适应屏幕)
2016/11/16 Javascript
基于MVC方式实现三级联动(JavaScript)
2017/01/23 Javascript
jquery 判断是否支持Placeholder属性的方法
2017/02/07 Javascript
新手必须知的Node.js 4个JavaScript基本概念
2018/09/16 Javascript
浅析微信扫码登录原理(小结)
2018/10/29 Javascript
es6数值的扩展方法
2019/03/11 Javascript
vue自定义指令directive的使用方法
2019/04/07 Javascript
vue 使用localstorage实现面包屑的操作
2020/11/16 Javascript
在Python的Flask框架中验证注册用户的Email的方法
2015/09/02 Python
python实现下载整个ftp目录的方法
2017/01/17 Python
Python实现简单的HttpServer服务器示例
2017/09/25 Python
获取python的list中含有重复值的index方法
2018/06/27 Python
Python3.6使用tesseract-ocr的正确方法
2018/10/17 Python
浅谈Python type的使用
2019/11/19 Python
pytorch:model.train和model.eval用法及区别详解
2020/02/20 Python
法国太阳镜店:Sunglasses Shop
2016/08/27 全球购物
英国在线自行车店:Merlin Cycles
2018/08/20 全球购物
技术总监岗位职责
2013/12/05 职场文书
领导接待方案
2014/03/13 职场文书
会议通知格式范文
2015/04/15 职场文书
公安干警正风肃纪心得体会
2016/01/15 职场文书
2019年大学毕业生个人自我鉴定范文大全
2019/03/21 职场文书
MySQL如何使用使用Xtrabackup进行备份和恢复
2021/06/21 MySQL
vue数据字典取键值项目的字典问题
2022/04/12 Vue.js