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

PHP 遞迴遍歷目錄與檔案完整實作範例

     編輯:PHP 相關知識

功能說明

給定一個目錄路徑,遞迴列出其下所有子目錄與檔案完整路徑。常見於面試題目與檔案系統掃描需求。

核心實作

<?php
/**
 * 遞迴遍歷目錄
 * @param string $dirname 目標目錄絕對路徑
 */
function traversal($dirname) {
    // 規範路徑
    $dirname = rtrim($dirname, '/\\');
    
    if (!is_dir($dirname)) {
        die("錯誤:路徑不存在或非目錄 - $dirname");
    }

    $handle = opendir($dirname);
    if (!$handle) {
        die("無法開啟目錄: $dirname");
    }

    while (($file = readdir($handle)) !== false) {
        // 跳過 . 與 ..
        if ($file === '.' || $file === '..') continue;

        $fullPath = $dirname . DIRECTORY_SEPARATOR . $file;
        echo "<br>$fullPath";

        if (is_dir($fullPath)) {
            // 遞迴進入子目錄
            traversal($fullPath);
        }
    }
    closedir($handle);
}

// 使用範例
traversal('./filepath');
?>

進階版:使用 DirectoryIterator (PHP 5+ 推薦)

function scanDirRecursive($path) {
    $iterator = new RecursiveIteratorIterator(
        new RecursiveDirectoryIterator($path, RecursiveDirectoryIterator::SKIP_DOTS),
        RecursiveIteratorIterator::SELF_FIRST
    );

    foreach ($iterator as $fileInfo) {
        echo "<br>" . $fileInfo->getPathname();
    }
}

輸出範例

./filepath/subdir1
./filepath/subdir1/file_a.txt
./filepath/subdir2
./filepath/subdir2/file_b.jpg
./filepath/file_c.php

注意事項

  • 使用 DIRECTORY_SEPARATOR 確保跨平台相容。
  • 大型目錄樹建議加入記憶體限制與執行時間設定。
  • 生產環境應加入權限檢查與例外處理。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved