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
欢迎转载!但请带上文章地址^^