Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sortowanie plików pobranych z katalogu
Forum PHP.pl > Forum > PHP
fluffy
Witam,

Szukałem na forum i w internecie, czytałem manuale funkcji sortujących ale nie znalazłem odpowiedzi na mój problem.

Mam w folderach pliki ze zdjęciami nazwane cyframi od 1 do n.

Wszystko fajnie tylko po zczytaniu ich z katalogu przez PHP zwracane są w kolejności 1,10,11,12,...,19,2,20,21... itd.
A ja potrzebuję je zwrócić w kolejności 1,2,3,4,5,6,7....

Mógłbym oczywiście zastosować pętlę i pobierać pliki np od zmiennej $i, ale chciałbym żeby można było wrzucać pliki o różnej nazwie.
Można byłoby zostawić zwykłe alfabetyczne sortowanie, jednak mam takich galerii ze zdjęciami prawie tysiąc dlatego też zależy mi na jakimś rozwiązaniu.
W końcu np. total commander wyświetla pliki tak jakbym chciał więc chyba istnieje rozwiązanie tego problemu.

Bardzo Was proszę o wskazanie tematu na forum z rozwiązaniem, lub jakieś sugestie.

Pozdrawiam
starach
Musisz do tego samemu napisać funkcję sortującą.

np. używając void usort ( array &$tablica , callback $funkcja_porównująca ) Obcinasz fragment składający się z liczb konwertujesz do integera i porównujesz jak zwykłe liczby.
wookieb
http://pl2.php.net/sort i drugi parametr "SORT_NUMERIC - porównuj elementy jako liczby"
phpion
Prościej chyba wrzucić nazwy plików z katalogu do jakiejś tablicy rzutując ją wcześniej na inta:
  1. $tab[] = (int)$nazwa_pliku;

Wówczas z 1.jpg zrobi się 1 jako liczba. Posortujesz taką tablicę zwykłym sort() ale przy wyświetlaniu musisz dodać rozszerzenie pliku do elementu tablicy (bo będziesz miał 1 zamiast 1.jpg). Możesz również zapisywać tak aby mieć numer => nazwa_pliku:
  1. $tab[(int)$nazwa_pliku] = $nazwa_pliku;

i posortować tablicę po kluczu z zachowaniem wartości. Jaką funkcją? Poszukaj w manualu smile.gif

Cytat(wookieb @ 22.01.2010, 09:49:05 ) *
http://pl2.php.net/sort i drugi parametr "SORT_NUMERIC - porównuj elementy jako liczby"

Chyba jednak będzie najlepsze smile.gif hehe.
adam83
Witam,

Zastosuj rozwiazanie zaproponowane przez phpion, pobierz zawartosc katalogu do tablicy, zwyklym sortem ukladasz je alfabetycznie, nastepnie wyswietlasz wg. wlasnego pomyslu. Zamiescilem podobne pytanie kilka dni temu, dostalem taka podpowiedz, wszystko dziala bez zarzutu - jesli chcesz to napisz na priv, podesle kod.

pzdr
(przepraszam za brak polskich znakow -sila wyzsza)
fluffy
Dziękuję wszystkim za rady...

Poszedłem tropem natsort()
tylko ta funkcja sortuje co prawda tablicę tak jak chciałbym jednak nie zmienia indeksów elementów w niej znajdujących się, a na tym również mi zależało.

Doszedłem w końcu do takiego rozwiązania i wszystko działa.


$file = scandir($dir);
usort($file, "strnatcmp");


Jeszcze raz dzięki wielkie smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.