PHP递归的三种方式
一、利用引用做参数
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递归的三种方式相关推荐
- 使用javascript实现在页面打印的效果的三种方式
<div id="console"></div><script type="text/javascript">var con ...
- PHP压缩和解压缩文件的三种方式
前言:平时在项目中,偶尔会遇到文件备份导入导出的需求,在此记录使用PHP执行文件压缩和解压缩的三种方式** 目录 1. 使用PHP扩展的ZipArchive类 2. 使用压缩与解压缩类PclZip.p ...
- 读取Java文件到byte数组的三种方式及Java文件操作大全(包括文件加密,String加密)
读取Java文件到byte数组的三种方式 package zs;import java.io.BufferedInputStream; import java.io.ByteArrayOutputSt ...
- Spring循环依赖的三种方式以及解决办法
Spring循环依赖的三种方式以及解决办法 [转]https://www.cnblogs.com/liuqing576598117/p/11227007.html 示例 https://github. ...
- 三种方式强制删除被拒绝访问的文件夹
本人尝试了三种方式强制删除被拒绝访问的系统文件夹.分别是:更改文件夹属性的访问权限,第三方工具软件,Windows命令takeown和cacls.最后用cacls成功地删除了系统文件夹. 背景: 以前 ...
- 【Linux】部署Springboot项目到Linux服务器以及linux服务器下载文件的三种方式详解
Linux学习之路 初识Linux Linux内核 由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写 Linux 是一套免费使用和自由传播的类Unix操作系 ...
- 远程控制virtual box虚拟机系统的三种方式
远程控制virtual box虚拟机系统的三种方式[阅读时间:5分钟] 1.使用现有的远程控制软件 2.使用SSH连接 3.使用远程桌面控制虚拟机系统 对于把虚拟机安装在寝室笔记本的人来说,能够远程控 ...
- 命令行运行Python脚本时传入参数的三种方式
三种常用的方式 如果在运行python脚本时需要传入一些参数,例如gpus与batch_size,可以使用如下三种方式. python script.py 0,1,2 10 python script ...
- sass文件编译的三种方式【舒】
[舒:]sass文件编译的三种方式 方式一: 1.webstorm打开evtGulp项目或者mcake-activity项目 2.中,开启gulp->default/develop,启动watc ...
最新文章
- php解决 mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysq
- 收藏 | 深度学习在计算机视觉领域的应用总结
- CF1398D Colored Rectangles (记忆化搜索DP)
- java gui 窗口 传值_java – GUI – 在不同窗口之间传输数据(J...
- 【机器学习】梯度下降的Python实现
- 使用BlazeDS实现Java和Flex通信之hello world
- 1.[数据结构和算法分析笔记]数组
- INPUT只能输入数字
- HDU3791 二叉搜索树【二叉搜索树】
- 监听input框值得改变
- Spring源码下载并导入Idea
- 开机出现recovering journal解决办法
- HP DL380 G7安装部署VM ESXI6.5.0
- Linux awk 命令详解
- 纳赫鲁伯的地下城:混沌护符
- Linux下搜狗输入法的皮肤的更换
- 第1.4章 elasticsearch删除字段
- HTML使用 crypto-js-AES 加密
- golang爬虫项目Pholcus源码分析(四)
- 【mysql】sql时间查询
热门文章
- 【Shader】实验06——后处理实现色散效果
- 计算机软件著作权侵权行为的认定,计算机软件著作权侵权行为认定方法探讨.doc...
- opencv在电脑屏幕上画_用Python+OpenCV让电脑帮你玩微信跳一跳
- 6月程序员平均工资出炉,这个水平我慕了!
- iOS10集成siri
- 成绩查询显示服务器未授权,华燕机动车驾驶人考试远程监控系统
- JQuery nodeName、nodeValue 以及 nodeType
- 微信公众号文章怎么搞成html,微信公众号文章中的引导样式如何设置成签名模板?...
- JetBrains 推出全新数据科学 IDE——DataSpell
- 秋叶PPT高效训练营笔记 —— Day 1素材