PHP递归算法

时间:2019-04-18
本文章向大家介绍PHP递归算法,主要包括PHP递归算法使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

在PHP开发过程中,递归算法通常用于无限极分类。递归算法的实现方法是有多种的,如通过“静态变量”、“全局变量”、“引用传参”的方式。

1.静态变量的方法

静态变量只存在于函数作用域内,一般的函数内变量在函数结束后会释放,比如局部变量,但是静态变量却不会。就是说,下次再调用这个函数的时候,该变量的值会保留下来。
只要在变量前加上关键字static,该变量就成为静态变量了.

<?php

function call(){

    static $i = 0;

    echo $i . '';

    $i++;

    if($i<10){

        call();

    }

}


call();
输出:
0 1 2 3 4 5 6 7 8 9

2.全局变量方法

如果我们没有在方法体内用global 定义$i,则会出现$i未被声明的错误。并且需要注意,在函数体内定义的global变量,函数体内可以使用,在函数体外定义的global变量不能在函数体内使用。

注:Global的作用是定义全局变量,但是这个全局变量不是应用于整个网站,而是应用于当前页面,包括include或require的所有文件。递归即调用自身的函数。在使用递归时,我们需要在函数中定义退出条件,否则它将进入无限循环(这里我们通过if语句定义了退出条件)。

<?php

$i=1;

function call(){

    global $i;

    echo $i;

    $i++;

    if($i<=10){

        call();

    }

}

call();

输出:
12345678910

3.引用传参方法

php的引用,简单来说就是在变量或者函数、对象等前面加上&符号(也就是引用符号),这里就需要了解下PHP引用传递的概念,即可以将一个变量通过引用传递给函数,这样该函数就可以修改其参数的值。

<?php

function test($a=0,&$result=array()){

    $a++;

    if ($a<10){

        $result[]=$a;

        test($a,$result);

    }

    echo $a."<hr>";

    return $result;

}

var_dump(test());