Bia
Bia

Reputation: 183

RecursiveDirectoryIterator Show Folder First

I'm using RecursiveDirectoryIterator to show files from a path:

$pasta = $_SERVER["DOCUMENT_ROOT"]."/files/";

$dir = new RecursiveDirectoryIterator($pasta, FilesystemIterator::SKIP_DOTS);

$dir  = new RecursiveIteratorIterator($dir, RecursiveIteratorIterator::CHILD_FIRST);

$dir->setMaxDepth(1);

foreach ($dir as $fileinfo) { 
 echo $fileinfo->getFilename()."<br/>";
}

This show all files and folder in Alphabetical order, Is there a way to show first folders than files in Alphabetical order?

Upvotes: 3

Views: 919

Answers (1)

Vanya Avchyan
Vanya Avchyan

Reputation: 880

Using the isDir method to separate directives from files.

$pasta = $_SERVER["DOCUMENT_ROOT"]."/files/";

$dir = new RecursiveDirectoryIterator($pasta, FilesystemIterator::SKIP_DOTS);

$dir  = new RecursiveIteratorIterator($dir, RecursiveIteratorIterator::CHILD_FIRST);

$dir->setMaxDepth(1);

$dirs  = [];
$files = [];
foreach ($dir as $fileinfo) {
    if($fileinfo->isDir())
        $dirs[] = $fileinfo->getFilename(); 
    else
        $files[] = $fileinfo->getFilename();
}
$result = array_merge($dirs,$files);

echo "<pre>";
print_r($result);

echo implode('<br>', $result);

Upvotes: 3

Related Questions