首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 目錄遍歷完整指南:遞迴列出資料夾與檔案的實用函數

     編輯:PHP 相關知識

在 PHP 開發中,遍歷目錄結構是常見需求,無論是建立檔案管理器、批次處理上傳檔案,或是掃描專案目錄,都需要可靠的目錄遍歷功能。PHP 內建豐富的檔案系統函數,讓我們能輕鬆實現遞迴掃描、過濾特定副檔名、取得檔案屬性等進階操作。

核心函數介紹

主要使用 scandir() 取得目錄內容,搭配 is_dir() 判斷資料夾,再以遞迴方式深入子目錄。以下是封裝良好的通用函數:

function list_files($path) {
    $result = array('dirs' => array(), 'files' => array());
    if (!is_dir($path)) return $result;
    
    $items = scandir($path);
    foreach ($items as $item) {
        if ($item === '.' || $item === '..') continue;
        $fullPath = $path . DIRECTORY_SEPARATOR . $item;
        if (is_dir($fullPath)) {
            $result['dirs'][$item] = list_files($fullPath); // 遞迴
        } else {
            $result['files'][] = $item;
        }
    }
    return $result;
}

目錄遍歷示意圖

使用範例

直接呼叫函數即可取得結構化陣列:

$tree = list_files('/temp');
print_r($tree);

進階應用技巧

  • 過濾副檔名:在檔案判斷處加入 pathinfo($fullPath, PATHINFO_EXTENSION) 比對
  • 取得檔案大小/修改時間:使用 filesize()、filemtime() 豐富回傳資料
  • 迭代器模式:PHP 5.3+ 可用 RecursiveDirectoryIterator + RecursiveIteratorIterator 更優雅地處理

效能考量

遞迴遍歷深層目錄可能消耗較多記憶體,大型專案建議搭配 yield 產生器逐筆輸出,或使用系統指令 find(Linux)配合 exec() 取得路徑清單後再由 PHP 處理。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved