-1

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

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

但是有没有办法可以按字母顺序对文件名列表进行排序?

4

2 回答 2

0

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

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

//echo $file;

接下来使用这个片段:

$files_list = printAll(getcwd());
sort($files_list);
print_r( $files_list );
于 2013-06-19T14:02:04.190 回答
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>";
于 2013-06-19T13:51:28.870 回答