PHP – 檔案列表



Windows 命令 DIR 和 Linux 命令 ls 都顯示當前目錄中的檔案列表。這些命令可以使用不同的開關來對顯示的檔案列表應用條件。PHP 提供了一些選項,可以以程式設計方式列出給定目錄中的檔案。

readdir() 函式

PHP 中的 opendir() 函式類似於 fopen() 函式。它返回目錄的控制代碼,以便可以以序列化方式讀取目錄的內容。

opendir(string $directory, ?resource $context = null): resource|false

此函式開啟一個目錄控制代碼,供後續的 closedir()、readdir() 和 rewinddir() 呼叫使用。

readdir() 函式從 opendir() 函式返回的流控制代碼中讀取下一個可用條目。

readdir(?resource $dir_handle = null): string|false

這裡,dir_handle 是先前用 opendir() 開啟的目錄控制代碼。如果沒有指定,則假定為 opendir() 最近開啟的連結。

closedir() 函式類似於 fclose() 函式。它關閉目錄控制代碼。

closedir(?resource $dir_handle = null): void

該函式關閉 dir_handle 指示的目錄流。該流必須先前已由 opendir() 開啟。

示例

以下 PHP 程式碼一次讀取當前登入目錄中的一個檔案。

<?php
   $dir = getcwd();
   
   // Open a known directory, and proceed to read its contents
   if (is_dir($dir)) {
      if ($dh = opendir($dir)) {
         while (($file = readdir($dh)) !== false) {
            echo "filename:" . $file . "\n";
         }
         closedir($dh);
      }
   }
?>

scandir() 函式

scandir() 函式檢索給定目錄內的檔案和子目錄。

scandir(string $directory, 
int $sorting_order = SCANDIR_SORT_ASCENDING, 
?resource $context = null): array|false

預設情況下,“排序順序”為升序字母順序。如果此可選引數設定為 SCANDIR_SORT_DESCENDING,則排序順序變為降序字母順序。如果將其設定為 SCANDIR_SORT_NONE,則結果將未排序。

示例

使用以下 PHP 程式碼,scandir() 函式將返回給定目錄中檔案的陣列。

<?php
   $dir = "c:/xampp/php/mydir/";

   $files = scandir($dir);
   var_dump($files);
?>

它將產生以下輸出

array(4) {
   [0]=>
   string(1) "."
   [1]=>
   string(2) ".."
   [2]=>
   string(5) "a.txt"
   [3]=>
   string(5) "b.txt"
}

您可以使用foreach迴圈遍歷 scandir() 函式返回的陣列。

<?php
   $dir = "c:/xampp/php/mydir/";

   $files = scandir($dir);
   foreach ($files as $file)
   echo $file . PHP_EOL;
?>

它將產生以下輸出

.
..
a.txt
b.txt
廣告