-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

この種のことには 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 に答える