使用RecursiveDirectoryIterator和RecursiveIteratorIterator类可高效递归遍历文件夹,代码清晰且健壮,适合大多数场景;手动递归函数适合需要精细控制的场景;结合pathinfo可过滤特定类型文件,如.php文件;推荐优先使用迭代器方式。

要使用PHP递归遍历文件夹,最简单高效的方式是利用内置的RecursiveDirectoryIterator和RecursiveIteratorIterator类。这种方式无需手动写递归逻辑,代码更清晰、健壮。
这是推荐的方法,适合大多数场景:
$dir = '/path/to/your/folder';
$iterator = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($dir, RecursiveDirectoryIterator::SKIP_DOTS),
RecursiveIteratorIterator::SELF_FIRST
);
foreach ($iterator as $fileinfo) {
$depth = $iterator->getDepth();
$indent = str_repeat(" ", $depth);
if ($fileinfo->isDir()) {
echo "$indent[DIR] " . $fileinfo->getFilename() . "\n";
} else {
echo "$indent" . $fileinfo->getFilename() . " (size: " . $fileinfo->getSize() . " bytes)\n";
}
}
如果你希望完全控制流程,也可以手动写递归函数:
一、本站采用PHP+mysql,核心程序使用了kingcms PHP版,重新设计了模板界面,增加了一些操作功能,方便外卖同行可以很好的展示宣传自己的外卖产品。本套源码的模板可以随意共享传播,程序版权仍归Kingcms所有。 二、网站部署操作: 第一步:将“upload”文件夹的所有文件上传到网站的根目录下。 第二步:在数据库管理后台创建好数据库并将源码中的“mysql”文件夹里的文件导入到数据库中
0
function scanDirRecursively($path) {
if (!is_dir($path)) {
return;
}
$items = scandir($path);
foreach ($items as $item) {
if ($item === '.' || $item === '..') {
continue;
}
$fullPath = $path . DIRECTORY_SEPARATOR . $item;
if (is_dir($fullPath)) {
echo "[DIR] $fullPath\n";
scanDirRecursively($fullPath); // 递归进入子目录
} else {
echo "FILE: $fullPath\n";
}
}
}
// 调用示例
scanDirRecursively('/path/to/your/folder');
在实际项目中,你可能只想处理某种类型的文件。可以结合pathinfo()过滤:
立即学习“PHP免费学习笔记(深入)”;
$phpFiles = [];
foreach ($iterator as $fileinfo) {
if (!$fileinfo->isFile()) continue;
$ext = pathinfo($fileinfo->getFilename(), PATHINFO_EXTENSION);
if ($ext === 'php') {
$phpFiles[] = $fileinfo->getPathname();
}
}
print_r($phpFiles);
以上就是php递归遍历文件夹的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号