PHP scandir() 函数



PHP 的 scandir() 函数用于获取当前目录或指定目录中的所有文件。此函数返回给定目录中的文件和目录的数组。

目录、流行为和文件和目录的排序顺序作为参数传递给 scandir() 函数,该函数在成功时返回文件名数组,在失败时返回 false。

默认情况下,排序顺序为按字母顺序升序。如果可选的 sorting_order 设置为 SCANDIR_SORT_DESCENDING,则排序顺序为按字母顺序降序。如果使用 SCANDIR_SORT_NONE,则结果为未排序。

语法

以下是 PHP Directory scandir() 函数的语法:

array scandir ( string $directory [, int $sorting_order [, resource $context]] );

参数

下面列出了使用 scandir() 函数所需的参数:

序号 参数及说明
1

directory(必需)

将要扫描的目录。

2

sorting_order(可选)

指定排序顺序。默认为 0(升序)。如果设置为 1,则表示降序。

3

context(可选)

指定目录句柄的上下文。上下文是一组可以修改流行为的选项。

返回值

成功时返回文件名数组,失败时返回 FALSE。

PHP 版本

scandir() 函数在 PHP 4 核心版本中引入,并且与 PHP 5、PHP 7 和 PHP 8 兼容。

示例

我们将使用 PHP Directory scandir() 函数列出指定目录路径中存在的所有文件和目录。

程序将按升序打印内容,然后按降序打印内容。

<?php
   $dir    = '/newfolder';
   $files1 = scandir($dir);
   $files2 = scandir($dir, 1);
   
   print_r($files1);
   print_r($files2);
?> 

输出

这将产生以下结果:

Array (
   [0] => .
   [1] => ..
   [2] => abc.php
   [3] => bbc.txt
   [4] => somedir
)
Array (
   [0] => somedir
   [1] => indiabbc.txt
   [2] => status999.php
   [3] => ..
   [4] => .
)

示例

在下面的 PHP 代码中,我们将仅使用 scandir() 函数及其名为 SCANDIR_SORT_DESCENDING 的参数来按降序列出内容。

<?php
   $directory = "/Applications/XAMPP/xamppfiles/htdocs/mac";
   $contents = scandir($directory, SCANDIR_SORT_DESCENDING);

   foreach ($contents as $item) {
      echo $item . "<br>";
   }
?> 

输出

这将产生以下结果:

new dir
myfile.txt
my.php
logo.gif
index.php
images
image.gif
.DS_Store
..
.

示例

在这里,我们将使用 scandir() 函数扫描目录,并借助 is_dir() 函数验证给定路径中可用的目录,并打印其名称。

<?php
   // enter your working directory path here
   $directory = "/Applications/XAMPP/xamppfiles/htdocs/mac";

   // now scan the directory
   $items = scandir($directory);

   // print the directory here using foreach loop
   echo "Directories are: " . "<br>";
   foreach ($items as $item) {
      $dir = "$directory/$item";
      if (is_dir($dir)) {
         echo $item . "<br>";
      }
   }
?> 

输出

这将导致以下结果:

Directories are:
.
..
images
new dir

示例

在下面的 PHP 代码中,我们将使用 scandir() 函数扫描目录,并借助 is_file() 函数验证给定路径中可用的文件,并显示其名称。

<?php
   // enter your working directory path here
   $directory = "/Applications/XAMPP/xamppfiles/htdocs/mac";
   $items = scandir($directory);
   echo "Files are: " . "<br>";
   foreach ($items as $item) {
      $filePath = $directory . '/' . $item;
      if (is_file($filePath)) {
         echo $item . "<br>";
      }
   }
?> 

输出

此 PHP 代码的结果为:

Files are:
.DS_Store
image.gif
index.php
logo.gif
my.php
myfile.txt

注意

  1. scandir() 返回当前目录 (.) 和父目录 (..)。
  2. 传递给 scandir() 的不正确的目录路径会生成 E_WARNING 错误并返回 FALSE。
  3. scandir() 是耗时的 readdir() 方法的较短替代方法,后者一次读取一个目录条目。
  4. 可以使用 is_file() 函数将目录条目限制为仅文件。
  5. 使用 is_dir() 函数将目录与目录条目分开。
  6. 使用 array_diff() 函数从结果数组中删除条目。

总结

PHP 中的 scandir() 函数可用于列出指定目录内的文件和目录。它易于使用,并提供可变的结果排序。

php_function_reference.htm
广告