一、利用引用做参数

PHP 的引用允许用两个变量来指向同一个内容,例如 $a = &$b; 这意味着 $a 和 $b 指向了同一个变量。如下例子,因为 $data 使用了引用传递,所以数据会一直累加。

function recursion(&$data = [], $i = 0)
{if ($i < 10) {$data[] = $i;$i++;$this->recursion($data, $i);}return $data;
}
// 调用
$this->recursion();   // [0,1,2,3,4,5,6,7,8,9]

二、利用全局变量

global 在函数内申明变量不过是外部变量的同名引用。变量的作用范围仍然在本函数范围内。改变这些变量的值,外部同名变量的值自然也改变了。

function recursion($data = [], $i = 0)
{global $data;if ($i < 10) {$data[] = $i;$i++;$this->recursion($data, $i);}return $data;
}// 调用
$this->recursion();   // [0,1,2,3,4,5,6,7,8,9]

三、利用静态变量

静态变量只在第一次调用时初始化。仅在局部函数域中存在,但当程序执行离开此作用域时,其值并不丢失。

function recursion($i = 0)
{static $data = [];if ($i < 10) {$data[] = $i;$i++;$this->recursion($i);}return $data;
}// 调用
$this->recursion();   // [0,1,2,3,4,5,6,7,8,9]

PHP递归的三种方式相关推荐

  1. 使用javascript实现在页面打印的效果的三种方式

    <div id="console"></div><script type="text/javascript">var con ...

  2. PHP压缩和解压缩文件的三种方式

    前言:平时在项目中,偶尔会遇到文件备份导入导出的需求,在此记录使用PHP执行文件压缩和解压缩的三种方式** 目录 1. 使用PHP扩展的ZipArchive类 2. 使用压缩与解压缩类PclZip.p ...

  3. 读取Java文件到byte数组的三种方式及Java文件操作大全(包括文件加密,String加密)

    读取Java文件到byte数组的三种方式 package zs;import java.io.BufferedInputStream; import java.io.ByteArrayOutputSt ...

  4. Spring循环依赖的三种方式以及解决办法

    Spring循环依赖的三种方式以及解决办法 [转]https://www.cnblogs.com/liuqing576598117/p/11227007.html 示例 https://github. ...

  5. 三种方式强制删除被拒绝访问的文件夹

    本人尝试了三种方式强制删除被拒绝访问的系统文件夹.分别是:更改文件夹属性的访问权限,第三方工具软件,Windows命令takeown和cacls.最后用cacls成功地删除了系统文件夹. 背景: 以前 ...

  6. 【Linux】部署Springboot项目到Linux服务器以及linux服务器下载文件的三种方式详解

    Linux学习之路 初识Linux Linux内核 由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写 Linux 是一套免费使用和自由传播的类Unix操作系 ...

  7. 远程控制virtual box虚拟机系统的三种方式

    远程控制virtual box虚拟机系统的三种方式[阅读时间:5分钟] 1.使用现有的远程控制软件 2.使用SSH连接 3.使用远程桌面控制虚拟机系统 对于把虚拟机安装在寝室笔记本的人来说,能够远程控 ...

  8. 命令行运行Python脚本时传入参数的三种方式

    三种常用的方式 如果在运行python脚本时需要传入一些参数,例如gpus与batch_size,可以使用如下三种方式. python script.py 0,1,2 10 python script ...

  9. sass文件编译的三种方式【舒】

    [舒:]sass文件编译的三种方式 方式一: 1.webstorm打开evtGulp项目或者mcake-activity项目 2.中,开启gulp->default/develop,启动watc ...

最新文章

  1. php解决 mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysq
  2. 收藏 | 深度学习在计算机视觉领域的应用总结
  3. CF1398D Colored Rectangles (记忆化搜索DP)
  4. java gui 窗口 传值_java – GUI – 在不同窗口之间传输数据(J...
  5. 【机器学习】梯度下降的Python实现
  6. 使用BlazeDS实现Java和Flex通信之hello world
  7. 1.[数据结构和算法分析笔记]数组
  8. INPUT只能输入数字
  9. HDU3791 二叉搜索树【二叉搜索树】
  10. 监听input框值得改变
  11. Spring源码下载并导入Idea
  12. 开机出现recovering journal解决办法
  13. HP DL380 G7安装部署VM ESXI6.5.0
  14. Linux awk 命令详解
  15. 纳赫鲁伯的地下城:混沌护符
  16. Linux下搜狗输入法的皮肤的更换
  17. 第1.4章 elasticsearch删除字段
  18. HTML使用 crypto-js-AES 加密
  19. golang爬虫项目Pholcus源码分析(四)
  20. 【mysql】sql时间查询

热门文章

  1. 【Shader】实验06——后处理实现色散效果
  2. 计算机软件著作权侵权行为的认定,计算机软件著作权侵权行为认定方法探讨.doc...
  3. opencv在电脑屏幕上画_用Python+OpenCV让电脑帮你玩微信跳一跳
  4. 6月程序员平均工资出炉,这个水平我慕了!
  5. iOS10集成siri
  6. 成绩查询显示服务器未授权,华燕机动车驾驶人考试远程监控系统
  7. JQuery nodeName、nodeValue 以及 nodeType
  8. 微信公众号文章怎么搞成html,微信公众号文章中的引导样式如何设置成签名模板?...
  9. JetBrains 推出全新数据科学 IDE——DataSpell
  10. 秋叶PPT高效训练营笔记 —— Day 1素材