今天我們要介紹的是PHP的deletedir函數,這個函數的主要作用是刪除文件夾及其內部所有文件。在我們日常的開發中,出于某些原因我們經常需要刪除文件夾,這個函數就可以滿足我們的需求。
下面我們來看一下deletedir函數的基本用法。其實非常簡單,只需要傳遞一個參數即可,參數為要刪除的文件夾路徑。具體實現代碼如下:
function deletedir($dir) { if(is_dir($dir)) { $objects = scandir($dir); foreach($objects as $object) { if($object != "." && $object != "..") { if(filetype($dir."/".$object) == "dir") { deletedir($dir."/".$object); } else { unlink($dir."/".$object); } } } reset($objects); rmdir($dir); } }我們看一下上面這段代碼的邏輯:首先判斷要刪除的文件夾是否存在,然后通過scandir函數獲取文件夾下所有文件和文件夾的名稱,使用foreach循環遍歷所有文件和文件夾,如果當前遍歷到的文件或文件夾名稱不為“.”和“..”(即當前文件夾和上層文件夾),則繼續判斷當前文件或文件夾的類型:如果是文件夾,則遞歸調用本函數進行刪除操作;否則,直接調用unlink函數刪除該文件。隨后通過rmdir函數刪除文件夾本身。 如果我們要刪除的文件夾下有一些只讀文件或者有些沒有權限的文件,上述代碼可能會無法刪除這些文件。這時候,我們可以修改代碼,在執行unlink函數之前,先修改文件的權限,使其可以刪除,然后再進行刪除操作。具體實現代碼如下:
function deletedir($dir) { if(is_dir($dir)) { chmod($dir, 0755); $objects = scandir($dir); foreach($objects as $object) { if($object != "." && $object != "..") { if(filetype($dir."/".$object) == "dir") { deletedir($dir."/".$object); } else { chmod($dir."/".$object, 0644); unlink($dir."/".$object); } } } reset($objects); rmdir($dir); } }修改后的代碼在刪除文件之前,先通過chmod函數更改文件權限。其中0755表示所有人可讀可寫可執行,但用戶組和其他人只能讀和執行;0644表示所有人可讀可寫,但用戶組和其他人只能讀。 如果我們要遍歷整個文件夾樹,可以在每次調用deletedir函數時,都將當前文件夾下的所有文件和文件夾都打印出來,以便查看刪除的情況。具體實現代碼如下:
function deletedir($dir) { if(is_dir($dir)) { chmod($dir, 0755); $objects = scandir($dir); foreach($objects as $object) { if($object != "." && $object != "..") { if(filetype($dir."/".$object) == "dir") { echo "刪除文件夾:".$dir."/".$object."上述代碼中,我們在刪除文件夾或文件前,都會先輸出一條消息,以便查看刪除的情況。其中,"./test"表示要刪除的文件夾路徑。 總之,PHP的deletedir函數是一個非常實用的函數,可以幫助我們快速刪除文件夾及其內部所有文件。同時,我們也需要注意到刪除操作可能頻繁進行,需要謹慎操作。
"; deletedir($dir."/".$object); } else { echo "刪除文件:".$dir."/".$object."
"; chmod($dir."/".$object, 0644); unlink($dir."/".$object); } } } reset($objects); rmdir($dir); echo "刪除文件夾:".$dir."
"; } } deletedir("./test");