Petroffs
Я вообще не могу понять, в чем проблема.
Читаешь директорию, во время ее чтения проверяешь - файл у тебя попался ([p]is_file[/p]) или другая директория ([p]is_dir[/p]), если файл, кладешь в массив $files, если каталог - кладешь в массив $dirs, затем сортируешь ([p]sort[/p]) оба массива как душе угодно, и делаешь с ними все, что хочешь ([p]print_r[/p]).