2010-03-03 3 views
4

폴더의 모든 파일과 폴더를 PHP로 사전 순으로 나열하는 방법은 무엇입니까? 알파벳 순서로 파일 나열 (파일과 폴더 모두)

은 내가 파일 a.txt, b.txt, c에 대해 다음 사용하고, d.txt, c 폴더입니다. 문제는 c이 폴더이므로 b.txt 대신에 마지막으로 표시된다는 것입니다.

각 파일이나 폴더인지 확인하고 싶습니다.

<?php 
    $dir = opendir ("folders"); 
    while (false !== ($file = readdir($dir))) { 
     echo "$file <br />"; 
    } 
?> 

답변

1

glob()의 힘은 당신을 돕기 위해 여기에있다. 그냥 수행

$dir = glob("folders/*"); 
+0

어떻게 폴더를 확인할 수 있습니까? – usertest

+0

'is_file ($ filename)'과'is_dir ($ filename)'함수를 사용하십시오. –

+0

glob에는 여러 개의 매개 변수가 있으므로 폴더에 대해 두 번, 파일에 대해 두 번 사용할 수 있습니다. 또는 위에서 언급 한 is_file() 및 is_dir()을 사용하십시오. 자세한 내용은 http://php.net/glob (PHP 사용자에게는 매우 유용한 URL 바로 가기가 있습니다.) –

0

즉시 인쇄하는 대신 배열의 이름을 먼저 읽습니다. 그런 다음 배열을 정렬 한 다음 출력을 수행하십시오.

<?php 
$dir = opendir ("folders"); 
while (false !== ($file = readdir($dir))) { 
    $names[] = $file; 
} 
sort($names, SORT_STRING); 
foreach ($names as $name) { 
    echo "$name <br />"; 
} 
?> 
0

즉시 인쇄하는 대신 배열의 이름을 먼저 읽습니다. 그런 다음 배열을 정렬 한 다음 출력을 수행하십시오.

<?php 
    $files = array(); 
    $dir = opendir ("folders"); 
    while (false !== ($file = readdir($dir))) { 
     $files[] = $file; 
    } 
    sort($files); 

    foreach ($files as $f) 
     echo "$f <br />"; 
?> 
0

나는 당신의 질문의 secound 일부를 들어 다음 코드 (했던 opendir 등 필요 없음)

$entries = glob("*"); 
sort($entries); // This is optional depending on your os, on linux it works the way you want w/o the sort 
var_dump($entries); 

/* Output 
array(4) { 
    [0]=> 
    string(5) "a.txt" 
    [1]=> 
    string(5) "b.txt" 
    [2]=> 
    string(1) "c" 
    [3]=> 
    string(5) "d.txt" 
} 
*/ 

을 제안 : 당신은 PHP "is_file"와 "is_dir"기능

0
$files = scandir('folders'); 
sort($files); 
foreach ($files as $file) { 
    echo $file.'<br />'; 
}
관련 문제