时间:2021-07-01 10:21:17 帮助过:5人阅读
代码如下:
/*
* param string $dir 目录名称
* return array $dirList 查询结果数组
*/
function listDir($dir){
if(!file_exists($dir)||!is_dir($dir)){
return '';
}
$dirList=array('dirNum'=>0,'fileNum'=>0,'lists'=>'');
$dir=opendir($dir);
$i=0;
while($file=readdir($dir)){
if($file!=='.'&&$file!=='..'){
$dirList['lists'][$i]['name']=$file;
if(is_dir($file)){
$dirList['lists'][$i]['isDir']=true;
$dirList['dirNum']++;
}else{
$dirList['lists'][$i]['isDir']=false;
$dirList['fileNum']++;
}
$i++;
};
};
closedir($dir);
return $dirList;}
具体用法如下,比如需要查询目录 D:\PHPnow-1.5.6\htdocs 下的文件以及目录列表,则:
echo '
';print_r(listDir('D:\PHPnow-1.5.6\htdocs'));
说明:在这段代码中主要使用了PHP目录函数opendir(),readdir(),closedir(),下面分别进行解释一下:
1、opendir函数用来打开所游览的具体目录,函数参数为目录名,注意,如果PHP执行文件和浏览的主目录处在同一级,则传递的参数可以仅仅只是目录名,如果不在同一级或读取多级目录时,需带上具体的目录路径或文件路径。
2、在通过opendir函数读取了主目录后,通过while循环来进一步读取主目录下的多级目录及文件,此处使用的PHP目录函数为readdir,此函数从目录中读取目录或文件名,当没有可读取的目录或文件时,返回False,注意,读取的目录包含.和..,在本实例教程中由于是一级级往下读取目录,所以当读取的目录信息为.和..时跳出本次循环,继续读取下一级目录。
3、在读取完主目录的所有子目录及文件后,通过PHP目录函数closedir来关闭目录句柄,类似于fclose函数关闭文件。