Автор Тема: Головоломка с циклами и сортировкой  (Прочитано 4081 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн DLama

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 65
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Во первых, поздравляю всех с Новым Годом и  желаю всего самого наилучшего.

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

$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.

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 828
  • +0/-0
  • 0
    • Просмотр профиля
Головоломка с циклами и сортировкой
« Ответ #1 : 04 Января 2003, 07:49:45 »
Вместо echo "$file
"
засунь все имена в массив, отсортируй его как тебе надо, а потом уже выводи на печать.
Все болезни от нервов, только сифилис от удовольствия

Оффлайн DLama

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 65
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Головоломка с циклами и сортировкой
« Ответ #2 : 04 Января 2003, 09:06:49 »
Спасибо, мысль понятна, только вот каким реально кодом это сделать не пойму.

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

Если возможно, подскажите, пожалуйста, какой-нибудь код для примера, спасибо.

Оффлайн Egorsha

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 60
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Головоломка с циклами и сортировкой
« Ответ #3 : 04 Января 2003, 10:18:47 »
Массив не создается - поэтому и сортировать нечего....  за один цикл не управишься...

Сначала создай массив. Что-то типа так...
......
while ($file = readdir($handle)) {
$files[]=$file;
}
....
Потом отсортируй массив $files и следующим циклом выводи на печать.... Уже писали выше....

Оффлайн GoBeer

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 12
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Головоломка с циклами и сортировкой
« Ответ #4 : 04 Января 2003, 10:22:46 »
Вот какой-нибудь код (не проверял)

while ($file[] = readdir($handle)) {} // читаем все имена файлов в массив
sort ($file); // сортируем полученный массив
foreach ($file as $fname) { // выводим отсортированный массив
  
print "$fname
"
;
}

Оффлайн DLama

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 65
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Головоломка с циклами и сортировкой
« Ответ #5 : 05 Января 2003, 03:36:30 »
Разобрался, заработало, УРА

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

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28