php列出所有文件并按字母顺序排序

时间:2013-06-19 13:48:42

标签: php file

我正在使用此功能列出文件夹及其子文件夹中的所有文件

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());

但有没有办法按字母顺序排序文件名列表?

2 个答案:

答案 0 :(得分: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>";

答案 1 :(得分:0)

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

首先,不要回显第11行的文件名。

//echo $file;

接下来使用此代码段:

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