在我做了一些修改后,它就可以工作了:
<?php
function GetAllFiles($dir) {
$fileTree = [];
if (is_dir($dir) && ($dh = opendir($dir))) {
while ($node = readdir($dh)) {
if (is_dir($dir . '/' . $node)) {
if(!in_array($node, ['.', '..'])) {
$fileTree[] = GetAllFiles($dir . '/' . $node);
array_unshift($fileTree[count($fileTree)-1], $node);
}
} else {
$fileTree[] = $node;
}
}
closedir($dh);
}
return $fileTree;
}
print_r(GetAllFiles('tree'));
给定该文件树:
tree
tree/file1
tree/file2
tree/folder1
tree/folder1/file11
tree/folder1/file12
tree/folder2
tree/folder2/file21
tree/folder2/file22
tree/folder2/folder23
tree/folder2/folder23/file231
tree/folder2/folder23/file233
tree/folder2/folder23/file232
它产生输出:
Array
(
[0] => file2
[1] => Array
(
[0] => folder1
[1] => file11
[2] => file12
)
[2] => Array
(
[0] => folder2
[1] => Array
(
[0] => folder23
[1] => file231
[2] => file233
[3] => file232
)
[2] => file21
[3] => file22
)
[3] => file1
)
[0] => file2
[1][0] => folder1
[1][1] => file11
[1][2] => file12
[2][0] => folder2
[2][1][0] => folder23
[2][1][1] => file231
[2][1][2] => file233
[2][1][3] => file232
[2][2] => file21
[2][3] => file22
[3] => file1