2013-06-19 55 views
-1

我使用這個功能列出文件夾中的所有文件和子文件夾PHP列表中的所有文件和按字母順序排序

function printAll($dirName){ 
    $dirs=array($dirName); 
    $files=array(); 
    while($dir=array_pop($dirs)){ 
    $handle=opendir($dir); 
     while($file=readdir($handle)){ 
     if($file!='.' && $file!='..'){ 
      $dest=$dir.'/'.$file; 
      if(is_file($dest)){ 
      $files[]=$file; 
      echo $file; 
      }else{ 
      $dirs[]=$dest; 
      } 
     } 
     }//end of 1st while 
    }//end of 2nd while 
    return $files; 
}//end of function 

printAll(getcwd()); 

但是,有沒有辦法,我可以按字母順序排序的文件名列表?

+3

使用[SCANDIR()](HTTP://www.php。 net/manual/en/function.scandir.php)它給了你一個排序選項 –

+1

作爲一個旁註,如果你已經正確縮進你的代碼,你就不需要像'// end of while'這樣的評論...... – fvu

+0

選項將用asort($ files)對數組$ files []進行排序 – bestprogrammerintheworld

回答

0

你最好使用scandir這種事情。由於您請求的內容有點奇怪,因此內置的排序不會完成任務(由於抓取了下面目錄中的文件),但PHP構建的數組排序(在這種情況下爲natsort)應該完成這項工作精細。

function getDir($folder){ 
    $folderFiles = scandir($folder); 
    $files = Array(); 

    foreach($folderFiles as $filename){ 
    if($filename==="." || $filename==="..") continue; 

    if(is_dir($folder."/".$filename)){ 
     $files = array_merge($files, getDir($folder."/".$filename)); 
    }else{ 
     $files[] = $filename; 
    } 
    } 
    return $files; 
} 

$files = getDir("./"); 
natsort($files); 
$files = array_values($files); 

echo "<pre>"; 
print_r($files); 
echo "</pre>"; 
0

您可以使用php的sort方法來執行排序。

首先,不要呼應上線的文件名11

//echo $file; 

下一頁使用這段代碼:

$files_list = printAll(getcwd()); 
sort($files_list); 
print_r($files_list);