使用 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中文网其他相关文章!