scandir()返回指定目录中的文件和目录的数组。若成功则返回文件和目录的数组。失败则返回 FALSE。如果 directory 不是目录,则抛出 E_WARNING 级别的错误。
语法
scandir(directory,sorting_order,context);
参数 | 描述 |
---|---|
directory | 必需。规定要扫描的目录。 |
sorting_order | 可选。规定排列顺序。默认是 0,表示按字母升序排列。 如果设置为 SCANDIR_SORT_DESCENDING 或者 1,则表示按字母降序排列。 如果设置为 SCANDIR_SORT_NONE,则返回未排列的结果。 |
context | 可选。规定目录句柄的环境。context 是可修改目录流的行为的一套选项。 |
例子: 代码如下:
<?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函数来过滤会更方便。
以上是php scandir()函数排除特定目录示例用法的详细内容。更多信息请关注PHP中文网其他相关文章!