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

PHP 一行程式碼刪除目錄下所有檔案:array_map + glob 實戰

     編輯:PHP 相關知識

核心技巧

// 刪除當前目錄所有檔案 (不含子目錄)
array_map('unlink', glob('*'));

// 指定目錄
array_map('unlink', glob('aaa/*'));

原理解析

函數作用
glob(pattern)回傳符合模式的檔案/目錄陣列 (支援萬用字元 * ? [])
unlink(filename)刪除單一檔案
array_map(callback, array)將陣列每個元素套用 callback 函數

進階變體

遞迴刪除所有檔案 (含子目錄)

function delete_all_files($dir) {
    $files = glob(rtrim($dir, '/') . '/*');
    foreach ($files as $file) {
        is_dir($file) ? delete_all_files($file) : @unlink($file);
    }
}

僅刪除特定副檔名

array_map('unlink', glob('*.log'));
array_map('unlink', glob('*.{jpg,png,gif}', GLOB_BRACE));

保留特定檔案

$keep = ['config.php', '.htaccess'];
$files = array_diff(glob('*'), $keep);
array_map('unlink', $files);

注意事項

  • glob() 預設不回傳隱藏檔 (以 . 開頭),需額外處理 glob('.*')。
  • unlink() 失敗會回傳 false 並觸發 Warning,建議加 @ 或檢查權限。
  • 大量檔案 (萬筆以上) 可能超過記憶體/執行時間限制,建議分批處理或使用 DirectoryIterator。
  • 極度危險:請三次確認路徑,避免誤刪專案核心檔案。

效能比較

// 方法 1: array_map + glob (簡潔,適合中小量)
array_map('unlink', glob('*'));

// 方法 2: DirectoryIterator (記憶體效率佳,適合大量)
$dir = new DirectoryIterator('.');
foreach ($dir as $file) {
    if ($file->isFile()) @unlink($file->getPathname());
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved