Forum Webscript.Ru

Программирование => PHP => Тема начата: DLama от 04 Января 2003, 05:15:04

Название: Головоломка с циклами и сортировкой
Отправлено: DLama от 04 Января 2003, 05:15:04
Во первых, поздравляю всех с Новым Годом и  желаю всего самого наилучшего.

А во вторых головоломка.
Впрочем наверное не совсем головоломка. Точнее наверное это головоломка для меня :)
Вообщем так:
Есть цикл который выводит имена файлов из директории, в которой сам находиться. Просто и сердито:

$handle=opendir(".");
echo "Directory handle: $handle
";
echo "Files:
";
while ($file = readdir($handle)) {
echo "$file
";
}

Результат:
Files:
.
..
3amssota.jpg
2amssota.jpg
4amssota.jpg
1amssota.jpg

Всё бы хорошо, но надо, что бы результат выдавался в алфавитном порядке, или обратном алфавитном порядке а не как вздумается readdir($handle)

Всем спасибо, кто найдёт возможным помочь мне.
Название: Головоломка с циклами и сортировкой
Отправлено: Mog. от 04 Января 2003, 07:49:45
Вместо echo "$file
"
засунь все имена в массив, отсортируй его как тебе надо, а потом уже выводи на печать.
Название: Головоломка с циклами и сортировкой
Отправлено: DLama от 04 Января 2003, 09:06:49
Спасибо, мысль понятна, только вот каким реально кодом это сделать не пойму.

Добавил в цикл функцию сортировки
while ($file = readdir($handle)) {
asort ($file);
echo "$file
";
}
- получил ошибку.
Дословно не помню, но смысл похоже в том, что сортировать то типа нечего.

Если возможно, подскажите, пожалуйста, какой-нибудь код для примера, спасибо.
Название: Головоломка с циклами и сортировкой
Отправлено: Egorsha от 04 Января 2003, 10:18:47
Массив не создается - поэтому и сортировать нечего....  за один цикл не управишься...

Сначала создай массив. Что-то типа так...
......
while ($file = readdir($handle)) {
$files[]=$file;
}
....
Потом отсортируй массив $files и следующим циклом выводи на печать.... Уже писали выше....
Название: Головоломка с циклами и сортировкой
Отправлено: GoBeer от 04 Января 2003, 10:22:46
Вот какой-нибудь код (не проверял)

while ($file[] = readdir($handle)) {} // читаем все имена файлов в массив
sort ($file); // сортируем полученный массив
foreach ($file as $fname) { // выводим отсортированный массив
  print "$fname
";
}
Название: Головоломка с циклами и сортировкой
Отправлено: DLama от 05 Января 2003, 03:36:30
Разобрался, заработало, УРА

Спасибо большое за помощь :)