使用 PHP 遞歸查找檔案和資料夾
要遍歷目錄的內容和所有子目錄,需要使用遞歸函數。但是,提供的程式碼有效能問題,導致瀏覽器速度顯著變慢。
問題
函數不排除「.」。遞歸呼叫中的“..”目錄,導致無限循環和執行緩慢。
修正
為了解決這個問題,我們將程式碼修改為如下:
function getDirContents($dir, &$results = array()) { $files = scandir($dir); foreach ($files as $key => $value) { $path = realpath($dir . DIRECTORY_SEPARATOR . $value); if (!is_dir($path)) { $results[] = $path; } else if ($value != "." && $value != "..") { getDirContents($path, $results); $results[] = $path; } } return $results; }
排除「.」和「. .”
我們加入了排除「.」的條件。和來自遞歸呼叫的“..”目錄。這些目錄分別代表目前目錄和父目錄,包含它們將建立無限循環。
用法
要使用該函數,只需提供指向該函數的路徑即可您想要遍歷的目錄:
var_dump(getDirContents('/xampp/htdocs/WORK'));
此程式碼將傳回一個數組,其中包含指定目錄中的檔案和資料夾的完整清單。每個條目都是檔案或資料夾的完整路徑。
以上是如何在 PHP 中遞歸查找檔案和資料夾而不出現效能問題?的詳細內容。更多資訊請關注PHP中文網其他相關文章!