Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

RecursiveDirectoryIterator Show Folder First

Tags:

php

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?

like image 226
Bia Avatar asked Feb 25 '26 08:02

Bia


1 Answers

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);
like image 158
Vanya Avchyan Avatar answered Feb 27 '26 22:02

Vanya Avchyan