Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: sortowanie array'a po kawalku jego value
Forum PHP.pl > Forum > Przedszkole
senobicus
witam,

napisalem sobie prostacki skrypcik do mojej galeryjki... chce dodac do niego mozliwosc pewnego sortowania plikow.

tak wyglada przykladowy array $images: Array ( [0] => 03_IMG_0201.jpg [1] => 03_dupa.jpg [2] => 02_najnowszy.jpg [3] => 02_aaaaaa.jpg [4] => 02_sdfsdfdsf.jpg [5] => 02_IMG_0213.jpg [6] => 02_IMG_0212.jpg [7] => 02_IMG_0210.jpg [8] => 02_IMG_0209.jpg [9] => 02_IMG_0206.jpg [10] => 02_IMG_0205.jpg [11] => 02_nowyb.jpg [12] => 02_test2.jpg [13] => 02_test.jpg [14] => 01_IMG_0233.jpg [15] => 01_baldachim.jpg [16] => 01_nowya.jpg [17] => 01_krasnoludek.jpg [18] => 01_blachy.jpg )

chcialbym to posortowac w taki sposob zeby zachowac z powyzszego arraya kolejnosc ciagow ktore zaczynaja sie ta sama cyfra, np. 02_ ale tak zeby same ciagi byly w normalnej kolejnosci czyli 01_, 02_, 03_ itd.

czyli w tym przypadku zeby wyszlo cos takiego $images:
Array ( [0] => 01_IMG_0233.jpg [1] => 01_baldachim.jpg [2] => 01_nowya.jpg [3] => 01_krasnoludek.jpg [4] => 01_blachy.jpg [5] => 02_najnowszy.jpg [6] => 02_aaaaaa.jpg [7] => 02_sdfsdfdsf.jpg [8] => 02_IMG_0213.jpg [9] => 02_IMG_0212.jpg [10] => 02_IMG_0210.jpg [11] => 02_IMG_0209.jpg [12] => 02_IMG_0206.jpg [13] => 02_IMG_0205.jpg [14] => 02_nowyb.jpg [15] => 02_test2.jpg [16] => 02_test.jpg [17] => 03_IMG_0201.jpg [18] => 03_dupa.jpg )

pewnie to banalnie proste, ale ja nie znam sie na programowaniu i php zbyt dobrze (jestem tylko grafikiem) i chcialbym prosic zeby ktos napisal te pare linijek petelki za mnie, bo ja sie mecze z tym juz tydzien i mi sie nie udaje sad.gif
czy ktos moglby mi pomoc, bede bardzo wdzieczny.

pozdrawiam
krzysiek
senobicus
ew. jezeli ktos moglby mi napisac jak sprawdzic dane potrzebne do wykorzystania funkcji array_slice, czyli od jakiego momentu zaczyna sie jeden ciag np. 02_ i ile ma miejsc? bo to by mi chyba umozliwilo napisanie petelki samemu.

z gory dziekuje.
pirat
zwykłe SORT sobie z tym radzi ....

  1. <?php
  2.  
  3. $tablica = Array ( 0 => '03_IMG_0201.jpg', 1 => '03_dupa.jpg', 2 => '02_najnowszy.jpg', 3 => '02_aaaaaa.jpg', 4 => '02_sdfsdfdsf.jpg', 5 => '02_IMG_0213.jpg');
  4.  
  5. sort($tablica);
  6.  
  7. foreach($tablica as $i => $values) {
  8. print &#092;"$i ma : $values <br>\" ;
  9. }
  10.  
  11. ?>
senobicus
otorz, nie radzi sobie niestety.

bo uklada to alfabetycznie... a niestety nie tak ma byc.
porownaj wynik swojego kodu z tym, ktory chce osiagnac.
jest inny.

ma zachowac uklad wewnatrz ciagow. taki jest warunek.
moze z tym wyciaganiem slice'a ktos pomoze chociaz?

bardzo bym prosil.
crash
Ten twój wynik jest dość niezrozumiały. Raz masz nazwe z *_IMG* na początku, raz na końcu... I jak tu coś rozumieć. Zgadzam się z piratem, że samo sort() starczy.
senobicus
nie, no wlasnie raz na poczatku raz koncu... i wlasnie ten specyficzny, dziwnie posortowany uklad chce utrzymac. jest to specyficzny uklad, ktory jest mi potrzebny, wlasnie taki, zaden inny. wiec sort() NIE wystarczy niestety.

bo przy sort() '02_najnowszy.jpg' bedzie po '02_aaaaaa.jpg', a przy rsort() '02_sdfsdfdsf.jpg' bedzie przed '02_aaaaaa.jpg' itp. itd. a poniewaz nijak sie nie da utrzymac tego specyficznego sortowania zadna funkcja php z rodziny sort()... musze odczytac to sortowanie i potem je poukladac blokami. no i sie pytam jak to zrobic?

recznie takie sortowanie wyglada jak ponizej, ale poniewaz elementy beda rozne i rozna bedzie ilosc w poszczegolnych blokach, i blokow bedzie rozna ilosc, potrzebuje zrobic cos podobnego ale w petli:

Kod
$images03 = array_slice($images, 0, 2);
$images02 = array_slice($images, 2, 12);
$images01 = array_slice($images, 14, 5);

$images = array_merge($images01, $images02, $images03);


to moze moze jednak z tym array_slice() mi pomorzecie?

dzieki jeszcze raz i sorry ze tak mecze.
pirat
to może usort() albo uasort() cool.gif

a jak nie to, wiecej kombinowania niz to warte ;]
senobicus
czytasz czasem ze zrozumieniem pirat? napisalem ze nic z rodziny 'sort()' nie dziala. a kombinowania jest 10 linijek. ale co tam. powodzenia programisci ;P
mi sie udalo.
crash
No to podziel się z nami kodem, może komuś innemu się takie coś przyda. A i nie potępiaj odrazu funkcji u*sort(), bo chyba nie wiesz w jaki sposób sortują tablice...
pirat
Przepraszam ze chcialem pomoc, to juz sie nie powtorzy.
Przepraszam ze nie zrozumialem co wogole chcesz osiagnac, ale nie jestem chyba jedyny.
Przepraszam ze sam rozwiazales ten problem
tiredsmiley.gif
ps. jak wszystkie metody zawiodą poczytaj instrukcje www.php.net

pss. jak chcesz raz sortowac w ta strone a raz w tą zależnie od indeksu(prefixu), dalej sie upieram ze usortem, da sie to zrealziowac, jesi chodzi CI o cos innego.... to napisz to jaśniej, albo lepiej nie....

psss. jak porozbijasz to na mniejsze tablice wzgledem prefixow, ktora tu masz, to chyba bedzie latwiej cokolwiek zrobic


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