善用內建函數組合,能以極少代碼完成常見檔案系統操作。本文展示 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', ...) 逐一刪除$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);
}
}