Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Tablice, mój zły tok myślenia
Forum PHP.pl > Forum > Przedszkole
Zyggmunt
Witam, mam problem, nad którym męczę się już od dłuższego czasu, aż w końcu stwierdziłem, ze po prostu nie dam rady go rozwiązać (mimo, iż podejrzewam, że rozwiązanie jest banalne). Otóż mam następujący kod:

  1. $ile = $ilosc-1;
  2.  
  3.  
  4. $size = sizeof($tablica) - 1;
  5.  
  6. for ($r = 0 ; $r < $size ; $r++)
  7. {
  8. $tab[$r] = explode(".",$tablica[$r]);
  9. settype($tab[$r][1],"integer");
  10. }
  11.  
  12. $h = 0;
  13. $j = 0;
  14. for ( ; $j < $size;$j++)
  15. {
  16.  
  17. if($ile == $tab[$j][1])
  18. {
  19. $toto[$h] = $tablica[$j];
  20. $ile--;
  21.  
  22. $h++;
  23. }
  24. }


A teraz co do czego. Zmienna tablica zawiera wczytane przez readDir nazwy plików graficznych znajdujących się w pewnym folderze. Mają one postać plik.1.jpg (plik."nr_pliku".jpg). Użyłem tu kropki, by pobierać nr. pliku poprzez:
  1. $tab[$r] = explode(".",$tablica[$r]);
  2. settype($tab[$r][1],"integer");


Ogólnie rzecz biorąc chodzi o to, by w zmiennej $toto były po kolei ustawione nazwy plików od tego, który ma najwyższy nr. pliku, do tego, który ma najniższy (czyli 0). Nie wiem jednak czemu do $toto przypisuję się tylko najwyższa zmienna, a pozostałe nie. Zapewne dlatego, że nie zgadza się:
  1. if($ile == $tab[$j][1])
. Nie mam jednak pojęcia dlaczego tak się dzieje.

Bardzo proszę o poprawę kodu.

Pozdrawiam.
viking
  1. $arr = array ('plik.1.jpg','plik.0.jpg','plik.2.jpg');
  2. arsort($arr);
  3. print_r($arr);
Zyggmunt
Z tym, że jest pewien problem, bo chyba funkcja asort() sortuje pliki, lecz gdy mają "taką samą" nazwę tzn plik.1, plik.2, plik.3, tymczasem u mnie każdy plik musi się nazywać inaczej, tzn: obrazek.1.jpg, wino.2.jpg, wodka.3.jpg.

Odpowie ktoś jak użyć arsort() w moim przykładzie ? Bo nie mogę sobie z tym poradzić ;/ Print_r() wyświetla w dobrej kolejności, ale w postaci jak var_dump, czyli nie to o co mi chodzi. Więc jak to zrobić.

Mam np. zmienną $tablica:
  1. $tablica[0] = "plik.3.jpg";
  2. $tablica[1] = "zmienna.0.jpg";
  3. $tablica[2] = "obrazek.2.jpg";
  4. $tablica[3] = "komin.1.jpg";


I chcę, aby w zmiennej $ponumerowane było tak:
$ponumerowane[0] = "plik.3.jpg";
$ponumerowane[1] = "obrazek.2.jpg";
$ponumerowane[2] = "komin.1.jpg";
$ponumerowane[3] = "zmienna.0.jpg";

Bardzo proszę o pomoc.
jedrzejbl
  1. <?php
  2. function sortuj($a, $b)
  3. {
  4. $t_a = explode(".", $a);
  5. $t_b = explode(".", $b);
  6. if($t_a[1] > $t_b[1]) return 1;
  7. else return -1;
  8. }
  9.  
  10.  
  11. usort($tablica, "sortuj");
  12. ?>

To powinno zadziałać.
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.