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/code/52974.html
转载随意,但请附上文章地址:-)