今天老师主要给我们详细讲解了递归函数。
利用递归函数,我们可以解决很多问题i。例如:统计目录的大小/建立和删除目录/复制或移动目录等等 ,下面我们运用小实例来实现一下。
一、统计目录的大小
<?php
function dirSize($directory){
$dir_size=0;
if($dir_handle=@opendir($directory)){
while($filename=readdir($dir_handle)){
if($filename!="."&&$filename!=".."){
$subFile=$directory."/".$filename;
if(is_dir($subFile))
$dir_size+=dirSize($subFile);
if(is_file($subFile))
$dir_size+=filesize($subFile);
}
}
closedir($dir_handle);
return $dir_size;
}
}
$dir_size=dirSize("phpmyweb");
echo round($dir_size/pow(1024,1),2)."KB";
?>
二、建立和删除目录
<?php
function delDir($directory){
if(file_exists($directory)){
if($dir_handle=@opendir($directory)){
while($filename=readdir($dir_handle)){
if($filename!="." && $filename!=".."){
$subFile=$directory."/".$filename;
if(is_dir($subFile)) delDir($subFile);
if(is_file($subFile) unlink($subFile);
}
}
closedir($dir_handle);
rmdir($directory);
}
}
}
delDir("E:\wamp\www\PHP");
?>
三、复制或移动目录
<?php
function copyDir($dirSrc,$dirTo){
if(is_file($dirTo)){
echo "目标不是目录不能创建!";
return;
}
if(!file_exists($dirTo)){
mkdir($dirTo);
}
if($dir_handle=@opendir($dirSrc){
while($filename=readdir($dir_handle)){
if($filename!="." && $filename!=".."){
$subSrcFile=$dirSrc."/".$filename;
$subToFile=$dirTo."/".$filename;
if(is_dir($subSrcFile)) copyDir($subSrcFile,$subToFile);
if(is_file($subSrcFile) copy($subSrcFile,$subToFile);
}
}
closedir($dir_handle);
}
}
copyDir("E:\wamp\www\PHP","D:\PHP");
?>
递归函数的思想很重要,用的也很多,以上的例子是课本上的,都很有针对性。要多分析。