scandir()函数返回一个数组,其中包含指定路径中的文件和目录。如下所示:
例子:
代码如下:
@H_502_7@输出:
代码如下:
@H_502_7@大部分情况只需要该目录的文件列表数组,如下:
代码如下:
@H_502_7@一般是通过排除“.”或者“..”的数组项解决的:
代码如下:
PHP@H_502_7@functionfind_all_files($dir)@H_502_7@{@H_502_7@ $root = scandir($dir);@H_502_7@ foreach($rootas$value)@H_502_7@ {@H_502_7@ if($value === '.' || $value === '..'){@H_502_7@ continue;@H_502_7@ }@H_502_7@ if(is_file("$dir/$value")){@H_502_7@ $result[] = "$dir/$value";@H_502_7@ continue;@H_502_7@ }@H_502_7@ foreach(find_all_files("$dir/$value")as$value)@H_502_7@ {@H_502_7@ $result[] = $value;@H_502_7@ }@H_502_7@ }@H_502_7@ return$result;@H_502_7@ }@H_502_7@?>
@H_502_7@另外一种方法,利用array_diff函数,剔除scandir函数执行得到的数组:
代码如下:
PHP@H_502_7@$directory='/path/to/my/directory';@H_502_7@$scanned_directory=array_diff(scandir($directory),array('..','.'));@H_502_7@?>
@H_502_7@通常情况代码管理会产生.svn文件,或者限制目录访问权限的.htaccess等文件。所以通过array_diff函数来过滤会更方便。