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

PHP array_map 一行搞定刪除目錄下所有檔案與空目錄

     編輯:PHP 相關知識

PHP 極簡技巧:array_map 結合 glob 實現目錄清空與檔案刪除

善用內建函數組合,能以極少代碼完成常見檔案系統操作。本文展示 array_map 搭配 glob 與 array_filter 的實用模式。

一、刪除目錄下所有空目錄

array_map('rmdir', glob('*', GLOB_ONLYDIR));
  • glob('*', GLOB_ONLYDIR) 取得當前目錄所有子目錄名陣列
  • array_map('rmdir', ...) 對每個目錄執行 rmdir (僅能刪除空目錄)

二、刪除目錄下所有檔案 (保留子目錄)

array_map('unlink', array_filter(glob('*'), 'is_file'));
  • glob('*') 取得所有檔案與目錄
  • array_filter(..., 'is_file') 過濾只保留檔案
  • array_map('unlink', ...) 逐一刪除

三、array_map 實現 array_column 功能 (PHP 5.5 前)

$data = array(
    array('a' => 'first a',  'b' => 'first b'),
    array('a' => 'second a', 'b' => 'second b')
);

$columnA = array_map(function($row) { return $row['a']; }, $data);
// 結果: array('first a', 'second a')

匿名函數提取指定鍵值,等同 array_column($data, 'a')。

注意事項

  • rmdir 僅能刪除空目錄,非空目錄需遞歸刪除內容
  • 生產環境建議加入錯誤處理與日誌記錄
  • 操作前請確認工作目錄 (chdir) 正確,避免誤刪

進階:遞歸刪除非空目錄

function rrmdir($dir) {
    if (is_dir($dir)) {
        $objects = scandir($dir);
        foreach ($objects as $object) {
            if ($object != "." && $object != "..") {
                $path = $dir . DIRECTORY_SEPARATOR . $object;
                is_dir($path) ? rrmdir($path) : unlink($path);
            }
        }
        rmdir($dir);
    }
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved