利用递归 PHP 函数确定目录中的文件和文件夹
本讨论研究递归遍历目录文件和子目录的方法。
提供的代码:
function getDirContents($dir){ $results = array(); $files = scandir($dir); foreach($files as $key => $value){ if(!is_dir($dir. DIRECTORY_SEPARATOR .$value)){ $results[] = $value; } else if(is_dir($dir. DIRECTORY_SEPARATOR .$value)) { $results[] = $value; getDirContents($dir. DIRECTORY_SEPARATOR .$value); } } } print_r(getDirContents('/xampp/htdocs/WORK'));
困境:
给定的代码拥有用于探索目录和文件的递归函数。但是,它无法忽略“.”。和“..”,导致潜在的无限循环。而且,每个文件和目录在结果中都是重复的。
答案:
为了解决这个问题,我们可以修改函数如下:
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; }
这段代码:
以上是如何使用 PHP 递归列出目录中的所有文件和文件夹,避免无限循环和重复条目?的详细内容。更多信息请关注PHP中文网其他相关文章!