나는 파티에 늦었지만 glob()
이 아닌 readdir()
으로 해결책을 제시하고자합니다. 솔루션에서 누락 된 것은 재귀 버전의 솔루션입니다. 그러나 readdir을 사용하면 glob보다 빠릅니다.
그래서 글로브와 함께 그 결과는 다음과 같습니다
function myglobdir($path, $level = 0) {
$dirs = glob($path.'/*', GLOB_ONLYDIR);
$files = glob($path.'/*');
$all2 = array_unique(array_merge($dirs, $files));
$filter = array($path.'/Thumbs.db');
$all = array_diff($all2,$filter);
foreach ($all as $target){
echo "$target<br />";
if(is_dir("$target")){
myglobdir($target, ($level+1));
}
}
}
그리고이 하나가 readdir 함께하지만, 기본적으로 같은 출력이 있습니다
function myreaddir($target, $level = 0){
$ignore = array("cgi-bin", ".", "..", "Thumbs.db");
$dirs = array();
$files = array();
if(is_dir($target)){
if($dir = opendir($target)){
while (($file = readdir($dir)) !== false){
if(!in_array($file, $ignore)){
if(is_dir("$target/$file")){
array_push($dirs, "$target/$file");
}
else{
array_push($files, "$target/$file");
}
}
}
//Sort
sort($dirs);
sort($files);
$all = array_unique(array_merge($dirs, $files));
foreach ($all as $value){
echo "$value<br />";
if(is_dir($value)){
myreaddir($value, ($level+1));
}
}
}
closedir($dir);
}
}
나는 사람이 유용하게 찾을 수있는 희망을.
포스트는 당신이 자신을 알아 낸, 그리고 그것을 개선 할 수 있다면 우리는 당신을 알 수 있습니다. – alex
@alex - 빠져 나가는 것이 훨씬 더 효율적인 방법이 있다면, 시간을 낭비하고 싶지 않습니다. 거기에 달콤한 대답이 없다면 매뉴얼에서 무언가를 복사 할 수 있습니다. – Ben
내 솔루션이 편집되었습니다.이를 반영하도록 질문을 편집 할 수 있습니다. – alex