首页 > php开发 > php递归用法与递归目录实例

php递归用法与递归目录实例

在php中递归算法是我们比得不多的一种数据遍历方式了,下面我来给大家介绍一下利用递归来做一下用的东西吧,看一个简单的递归实例.

例1,代码如下:

<?php
function demo($a) {
    static $sum = 1;
    if ($a > 1) {
        $sum*= $a;
        demo(--$a);
    } else {
        $a = $sum;
    }
    return $sum;
}
echo demo(10);
?>

例2,遍历目录,代码如下:

<?php
class listdir {
    var $depth;
    var $dirname;
    var $list;
    var $tostring;
    function listdir($dir) {
        $this->dirname = $dir;
        $this->depth = 0;
        $this->tostring = "";
    }
    //把结果保存进多维数组
    function getlist($dir = "") {
        if ($dir == "") $dir = $this->dirname;
        $d = @dir($dir);
        while (false !== ($item = $d->read())) {
            if ($item != "." && $item != "..") {
                $path = $dir . "/" . $item;
                if (is_dir($path)) {
                    $this->depth+= 1;
                    $this->getlist($path);
                } else {
                    $this->list[$this->depth][] = $item;
                }
            }
        }
        $this->list[$this->depth]['directory'] = $dir;
        $this->depth-= 1;
        $d->close();
        return $this->list;
    }
    //字符窜化结果
    function tostring($dir = "") {
        if ($dir == "") $dir = $this->dirname;
        $d = @dir($dir);
        $this->tostring.= "<UL>n";
        $this->tostring.= "Directory:" . $dir . "n";
        while (false !== ($item = $d->read())) {
            if ($item != "." && $item != "..") {
                $path = $dir . "/" . $item;
                if (is_dir($path)) {
                    $this->depth+= 1;
                    $this->tostring($path);
                } else {
                    $this->tostring.= "<LI>" . $item . "</LI>n";
                }
            }
        }
        $this->depth-= 1;
        $d->close();
        $this->tostring.= "</UL>n";
        return $this->tostring;
    }
}
$wapdir = "jquery";
$d = new listdir($wapdir);
echo $d->tostring();
/*
输出结果: 
<UL> 
Directory:jquery 
<LI>jquery-1.3.2.js</LI> 
<LI>jquery-1.3.2.min.js</LI> 
<LI>jquery-1.3.2-vsdoc2.js</LI> 
<LI>test.html</LI> 
<LI>common.js</LI> 
<UL> 
Directory:jquery/d 
<LI>common.js</LI> 
<LI>jquery-1.3.2.js</LI> 
</UL> 
</UL> 
*/
?>


教程地址:http://www.phprm.com/develop/fs3736.html

欢迎转载!但请带上文章地址^^

标签:php递归用法 递归目录

发表留言