BNS
Новичок
Дерево файлов и каталогов - сортировка по имени
Проблема:
Есть папка content следующей структуры:
Путь есть массив $files, элементы которого - файлы и вложенные папки каталога content. При обходе "в лоб" элементы будут отсортированы по дате создания соотв. папки или файла.
Задача:
Написать функцию, которая бы сортировала элементы массива по типу (файл/папка) и по имени.
Мой вариант:
Глюк:
Все сработает как надо, НО! Если файл находится в корне и его имя - нечто среднее между именами папок (nameless.txt и папки audio/ и video/), то он так и останется "между папок" в отсортированном массиве (будет идти сразу после файлов папки audio/).
Что делать? Я дофига раз все проверил - вроде правильно!
-~{}~ 08.02.05 23:25:
Еще один пример описки, когда описка является синтаксически правильной =)
Вместо uksort() (сортировка по КЛЮЧАМ) нужно брать функцию usort() (сортировка по ЗНАЧЕНИЯМ) =)
Теперь печатаемое дерево неотличимо от цивильного дерефа файлов.
Проблема:
Есть папка content следующей структуры:
Код:
index.txt
media/
index.txt
video.txt
audio.txt
nameless.txt
audio/
index.txt
contacts.txt
Задача:
Написать функцию, которая бы сортировала элементы массива по типу (файл/папка) и по имени.
Мой вариант:
Код:
chdir("content/");
ptf();
function fcmp($f1,$f2) {
if (is_dir($f1) && !is_dir($f2)) return -1;
if (!is_dir($f1) && is_dir($f2)) return 1;
if ($f1<$f2) return -1; elseif ($f1>$f2) return 1; else return 0;
}
chdir("..");
usort($files,"fcmp");
Все сработает как надо, НО! Если файл находится в корне и его имя - нечто среднее между именами папок (nameless.txt и папки audio/ и video/), то он так и останется "между папок" в отсортированном массиве (будет идти сразу после файлов папки audio/).
Что делать? Я дофига раз все проверил - вроде правильно!
-~{}~ 08.02.05 23:25:
Еще один пример описки, когда описка является синтаксически правильной =)
Вместо uksort() (сортировка по КЛЮЧАМ) нужно брать функцию usort() (сортировка по ЗНАЧЕНИЯМ) =)
Теперь печатаемое дерево неотличимо от цивильного дерефа файлов.