龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > php编程 >

一个遍历文件目录的function,有两个问题请指教?

时间:2014-07-22 14:49来源: 作者: 点击:
分享到:
问题一、static $file_list 的static是为递归叠加使用,如何避免外面两次以上调用,后边的结果里叠加前边调用的结果?问题二、形参$ext_name是否分成两个参数($mode=true,$ext_name=)比较合理
问题一、static $file_list 的static是为递归叠加使用,如何避免外面两次以上调用,后边的结果里叠加前边调用的结果?
问题二、形参$ext_name是否分成两个参数($mode=true,$ext_name='')比较合理?
//遍历文件(文件列表)
static function scan($dir,$ext_name=true){

$dir_tree=array();
static $file_list=null;
static $the_file_list=null;

foreach (scandir($dir) as $file) {

$file_location=trim($dir,'/').'/'.$file;

if (is_dir($file_location) && $file!="." && $file!="..") {
array_push($dir_tree,self::scan($file_location,$ext_name));
} else {

if (($file!='.' && $file!='..') || !is_dir($file)) {
if ($ext_name===true) {
$file_list[]=$file_location;
}

if ($ext_name && $ext_name==trim(strrchr($file,'.'))) {
$the_file_list[]=$file_location;
}

$tmp=explode('/',$dir);
array_push($dir_tree,'<strong>'.end($tmp).' </strong>'.$file);
}

}

}

$result=($ext_name===true) ? $file_list : $the_file_list;
return $ext_name ? $result : $dir_tree;
}
精彩图集

赞助商链接