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