程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2023-06(1)

PHP递归的三种方式

发布于2021-03-14 05:59     阅读(1455)     评论(0)     点赞(26)     收藏(4)


 

一、利用引用做参数

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]

 

原文链接:https://www.cnblogs.com/woods1815/p/13234610.html



所属网站分类: 技术文章 > 博客

作者:phpNumOne

链接:http://www.phpheidong.com/blog/article/3328/5de1625da4aafec32c53/

来源:php黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

26 0
收藏该文
已收藏

评论内容:(最多支持255个字符)