Если вы хотите отобразить файлы перед каталогами, то вы не можете сделать это просто в цикле, потому что вы не будете знать, появятся ли другие файлы позже.
Вам нужно объединить данные вдерево (массив массивов, проиндексированных компонентом пути) или сортируйте его.
$components = explode('/',$path);
$file = array_pop($components);
$current = $root;
foreach($components as $component) {
if (!isset($current[$component])) $current[$component] = array();
$current = &$current[$component];
}
$current[$file] = true;
Это должно дать вам такую структуру, как:
array(
'test'=>array(
'test1.png'=>true,
'subfolder'=>array(
…
С которой будет легко работать (изКонечно, это своего рода побеждает цель RecursiveDirectoryIterator
. Вы можете получить то же самое, рекурсивно используя обычный DirectoryIterator
).
Или если вы сортируете пути по глубине (напишите свою функцию сравнения), тогдаможно вывести его, просто напечатав последний компонент пути с соответствующим отступом.