0
我正在使用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()
)
干杯!递归使我的大脑模糊不清。 – 2011-12-23 18:55:13