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

PHP 目錄檔案列表函數:遞迴掃描回傳陣列與檔案總數

     編輯:PHP 相關知識

函數原始碼

";
echo "檔案總數: $number";

改進版 (遞迴、過濾、物件導向)

isFile() && preg_match($pattern, $file->getFilename())) {
                $files[] = $file->getPathname();
            }
        }
        return $files;
    }
}

$scanner = new DirScanner();
$phpFiles = $scanner->scan(__DIR__, '/\.php$/');
echo "PHP 檔案數: " . count($phpFiles);
print_r($phpFiles);

關鍵差異對照

特性舊版 searchdir改進版 DirScanner
遞迴子目錄否是 (RecursiveIteratorIterator)
檔案過濾無Regex pattern 參數
回傳方式全域變數直接回傳陣列
記憶體效率一次載入所有可改用 Generator 逐個產出
錯誤處理無可拋出 Exception

Generator 版 (大量檔案低記憶體)

function scanGen(string $dir) : Generator {
    $it = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir, FilesystemIterator::SKIP_DOTS));
    foreach ($it as $file) {
        if ($file->isFile()) yield $file->getPathname();
    }
}

foreach (scanGen('/var/log') as $path) {
    // 逐個處理,不佔用大量記憶體
    echo $path . "\n";
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved