我正在使用我在PHP.net上找到的函数来递归检查目录及其内容。它为每个子目录创建一个嵌套数组,其中这些数组的元素对应于文件名。
它不跟踪文件路径。这就是我想要的。这是代码:
function get_directory_tree( $outerDir, $filters = array() ){
$dirs = array_diff(
scandir( $outerDir ),
array_merge( Array( ".", ".." ), $filters )
);
$dir_array = Array();
foreach( $dirs as $d ){
if(is_dir($outerDir."/".$d)){
$dir_array[ $d ] = get_directory_tree( $outerDir."/".$d, $filters );
} else {
$dir_array[ $d ] = $d;
}
}
return $dir_array;
}
它为我的测试用例输出了这个:
Array(
[a] => Array(
[aa] => Array(
[hjkl.txt] => hjkl.txt
)
[asdf.txt] => asdf.txt
)
[b] => Array()
[c] => Array()
)
这就是我希望输出的内容:
Array(
[a] => Array(
[aa] => Array(
[hjkl.txt] => 'a/aa/hjkl.txt'
)
[asdf.txt] => 'a/asdf.txt'
)
[b] => Array()
[c] => Array()
)
答案 0 :(得分:1)
更改...
$dir_array[ $d ] = $d;
为...
$dir_array[ $d ] = $outerDir."/".$d;