![](/img/trans.png)
[英]PHP Recursive function: Get all files and directories within a directory and its sub-directories
[英]PHP recursive function for printing files and directories is not working
我正在尝试制作递归PHP函数,该函数将遍历目录树和子目录树并将所有目录和文件放入一个数组中。
我的代码对我来说看起来很合逻辑,但无法正常工作。
目录和文件树:
PHP代码
<?php
function printFiles($directory) {
$files = array();
foreach (scandir($directory) as $file) {
if ($file === '.' || $file === '..')
continue;
// checking is it file or directory
if (is_dir($directory . '\\'. $file)) {
return printFiles($directory . '\\'. $file);
}
array_push($files, $file);
}
return($files);
}
$directory = 'C:\Users\Jakov\Desktop\DIRECTORIES';
print_r(printFiles($directory));
?>
我得到这个结果:
Array ( )
您只会得到函数遇到的第一个最深的文件夹A_1_1
包含的文件,该文件夹中没有文件。
找到目录时不返回。 改为添加到当前列表:
// checking is it file or directory
if (is_dir($directory . '/'. $file)) {
$files = array_merge($files, printFiles($directory . '/'. $file));
} else {
array_push($files, $file);
}
另外,将/
用作路径。 它可以在Windows中使用,并且可以避免转义错误:
$directory = 'C:/Users/Jakov/Desktop/DIRECTORIES';
(在代码中,应使用\\\\
而不是\\
作为分隔符。)
您还应该检查链接 -并忽略它们-否则您可能会陷入无限循环。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.