返回结果更友好更实用的方法请参考:
php循环获取目录以及所有子目录中的所有文件
自己总结的一个返回所查询的目录下的文件以及文件夹的列表数组的函数。数组中会区分文件是否为目录或者文件,以及所查询目录下的目录总数和文件总数。废话不多说,代码如下:
/* * author : www.maopiaopiao.com * 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 '<pre>'; 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函数关闭文件。