Search code examples
phpsortingdirectory

PHP: sort folder first and then files


$dir = '/master/files';
$files = scandir($dir);
foreach($files as $file){
   if(($file != '.') && ($file != '..')){
      if(is_dir($dir.'/'.$file)){
         echo '<li class="folder">'.$file.'</li>';
      }else{
         echo '<li class="file">'.$file.'</li>';
      }
   }
}

From the script above, I get result:

images (folder)
index.html    
javascript (folder)
style.css

How to sort the folder first and then files?


Solution

  • Try this :

    $dir = '/master/files';
    $directories = array();
    $files_list  = array();
    $files = scandir($dir);
    foreach($files as $file){
       if(($file != '.') && ($file != '..')){
          if(is_dir($dir.'/'.$file)){
             $directories[]  = $file;
    
          }else{
             $files_list[]    = $file;
    
          }
       }
    }
    
    foreach($directories as $directory){
       echo '<li class="folder">'.$directory.'</li>';
    }
    foreach($files_list as $file_list){
       echo '<li class="file">'.$file_list.'</li>';
    }