先来一张效果图:
其实就是查看当前的文件目录:
了解这个之前我们先来了解一下什么是递归
递归:函数自己调用自己的一种编程方法,类似于循环,所以递归函数中必须要有终止条件,否则就成了死循环
来个例子:
/*
什么是递归?举个例子:
求4的阶乘
1! = 1
2! = 2*1 2*1!
3! = 3*2*1 3*2!
4! = 4*3*2*1 4*3!
*/
function factorial($n = 1){
if($n<=1){
return 1;
}
$num = $n*(factorial($n-1)); //调用它本身 在进行运算
return $num;
}
echo factorial(4); // 输出结果是24
了解了递归那就很容易理解下面的这个实例:
echo "当前目录结构如下:"."<br />"."(红色代表目录文件)"."<br />";
function forFile($file = './'){
if(is_dir($file)){ //判断
$fp = opendir($file); //打开
echo "<ul>";
while ($filename =(readdir($fp))) {
if($filename!='.'&&$filename!='..'){ //默认任何目录下会有一个 . 和 .. 的目录
/*
注意这里 举个例子:比如目录为 a/b/c
这里$file 就代表了a 我们要找b所以应该用 a/
*/
$newFile = $file."/".$filename;
if (is_dir($newFile)) { //在判断
echo '<li style ="color:red;">'.$filename."</li>";
forFile($newFile); //调用本身
}else{
echo "<li>".$filename."</li>";
}
}
}
echo "</ul>";
}
}
forFile();
搞定!