PHP递归遍历目录推荐使用RecursiveDirectoryIterator配合RecursiveIteratorIterator,简洁健壮、安全可控;支持基础遍历、条件筛选、异常处理及树形结构构建。

PHP递归遍历目录,核心是用 RecursiveDirectoryIterator 配合 RecursiveIteratorIterator,既简洁又健壮,比手写递归函数更安全、更易控制。
这是最常用场景,适合快速查看整个目录结构:
RecursiveDirectoryIterator 实例,传入根路径(自动跳过 . 和 ..)RecursiveIteratorIterator 包装它,启用深度优先遍历getFilename() 获取名称,isFile()/isDir() 判断类型示例代码:
$it = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator('/path/to/dir'),
RecursiveIteratorIterator::CHILD_FIRST
);
foreach ($it as $file) {
echo str_repeat(' ', $it->getDepth()) . $file->getFilename();
if ($file->isDir()) echo ' [DIR]';
echo PHP_EOL;
}实际开发中往往不需要全部内容,比如只查 .php 文件或大于 10KB 的日志:
立即学习“PHP免费学习笔记(深入)”;
pathinfo($file->getFilename(), PATHINFO_EXTENSION) === 'php'
$file->getSize() 获取字节数,注意符号链接需用 getRealPath() 再 statRegexIterator 或自定义 FilterIterator 封装逻辑,提高复用性生产环境必须处理异常,否则脚本可能中断:
try...catch 捕获 UnexpectedValueException(如无权限读取某子目录)RecursiveDirectoryIterator 会追踪符号链接,若目标形成环路会报错;可传入标志 FilesystemIterator::SKIP_DOTS | FilesystemIterator::FOLLOW_SYMLINKS 并配合 setMaximumDepth() 限制层级$file->isReadable() 再操作内容常见于后台资源管理、静态站点生成等场景:
$it->getDepth() 判断层级,用递归或栈方式组装嵌套数组name、type(file/dir)、path(相对或绝对)iterator_to_array($it, false) 转为索引数组再处理,但注意内存占用
基本上就这些。用好内置迭代器类,不用自己拼路径、判类型、管深度,既少出错也更符合PHP惯用法。
以上就是PHP目录递归遍历方法说明_PHP查找文件结构实战的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号