Похоже, вы не обращались к случаю, когда $relativePath
не является каталогом.Вы не описали свой вывод, но я полагаю, что он полностью состоит из пустых массивов без каких-либо желаемых файлов внутри.Это правильно?
Вам нужно обработать конечный случай, когда достигается файл, а не каталог.Сделайте себе удар, я могу попытаться опубликовать для вас позже, если вы все еще боретесь.
Кроме того, я боюсь, что это не будет иметь дело с большими глубинами.Хотя я не уверен, что вам это нужно на основе вашего примера.
- РЕДАКТИРОВАТЬ -
Это не создаст полное дерево, как я объяснил в комментарии ниже, но в зависимости отто, что вы ищете, может быть в порядке.Полное дерево потребует более значительных изменений.Однако то, что я выкладываю ниже, должно как минимум поместить файлы в папки.
private function get_tree()
{
$uploads = __RELPATH__ . DS . 'public' . DS . 'uploads';
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($uploads), RecursiveIteratorIterator::SELF_FIRST);
$output = array();
foreach($iterator as $file)
{
$relativePath = str_replace($uploads . DS, '', $file);
if ($file->isDir())
{
if (!in_array($relativePath, $output))
{
$output[$relativePath] = array();
$lastDir = $relativePath;
}
}
else
{
$p = path_info($file);
$d = $p['dirname']; $f = $p['basename'];
$output[$d][] = basename($f);
}
}
return $output;
}