Tri arborescence de fichier
Bonjour à tous,
Mon projet est de lister une arborescence complète d'un répertoire donné.
Jusqu'ici, j'arrive bien à récupérer dans un tableau les dossiers, sous-dossier et fichier correspondant.
Seulement, je n'arrives pas à faire le tri "à la manière de windows" ; c'est-à-dire, les dossiers par ordre alphabétique en premier et les fichiers par ordre alphabétique en second.
Voici mon code pour être plus clair :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
$dir = 'document_repository';
$ritit = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir, FilesystemIterator::SKIP_DOTS), RecursiveIteratorIterator::CHILD_FIRST);
$r = array();
foreach ($ritit as $splFileInfo) {
if($splFileInfo->isDir()){
$path = array($splFileInfo->getFilename() => array());
}else{
$path = array($splFileInfo->getFilename());
}
for ($depth = $ritit->getDepth() - 1; $depth >= 0; $depth--) {
$path = array($ritit->getSubIterator($depth)->current()->getFilename() => $path);
}
$r = array_merge_recursive($r, $path);
}
echo '<pre>';
print_r($r);
echo '</pre>'; |
Voici le resultat que cela me donne (un ordre alphabétique tout simple) :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
Array
(
[0] => atest.docx
[dossier1] => Array
(
[0] => feuille_de_style.css
[1] => htest.xlsx
[2] => logo.png
[3] => test.jnt
)
[dossier2] => Array
(
[0] => dtest.pptx
[1] => HE ingerables.pdf
[2] => jtest.docx
[sous-dossier2] => Array
(
[0] => dtest.jnt
[1] => logo.png
[2] => qlogo.jpg
[3] => test.zip
[4] => zfeuille_de_style.css
)
[3] => test.xlsx
[4] => wtest.txt
)
[1] => HE ingerables.pdf
[2] => htest.txt
[3] => logo.jpg
[4] => mtest.pptx
[5] => test.zip
) |
mais j'aimerais avoir ce résultat (ordre alphabétique avec les dossiers en premier :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
Array
(
[0] => atest.docx
[dossier1] => Array
(
[0] => feuille_de_style.css
[1] => htest.xlsx
[2] => logo.png
[3] => test.jnt
)
[dossier2] => Array
(
[sous-dossier2] => Array
(
[0] => dtest.jnt
[1] => logo.png
[2] => qlogo.jpg
[3] => test.zip
[4] => zfeuille_de_style.css
)
[0] => dtest.pptx
[1] => HE ingerables.pdf
[2] => jtest.docx
[3] => test.xlsx
[4] => wtest.txt
)
[1] => HE ingerables.pdf
[2] => htest.txt
[3] => logo.jpg
[4] => mtest.pptx
[5] => test.zip
) |
Une personne pour m'aider?
Merci