Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Tablice, mój zły tok myślenia
Zyggmunt
post 27.09.2009, 15:45:25
Post #1





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 28.04.2009

Ostrzeżenie: (0%)
-----


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.

Ten post edytował Zyggmunt 27.09.2009, 15:46:36
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
viking
post 27.09.2009, 15:57:00
Post #2





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


  1. $arr = array ('plik.1.jpg','plik.0.jpg','plik.2.jpg');
  2. arsort($arr);
  3. print_r($arr);


--------------------
Go to the top of the page
+Quote Post
Zyggmunt
post 29.09.2009, 15:34:28
Post #3





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 28.04.2009

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
jedrzejbl
post 29.09.2009, 18:50:29
Post #4





Grupa: Zarejestrowani
Postów: 12
Pomógł: 1
Dołączył: 4.08.2009

Ostrzeżenie: (0%)
-----


  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ć.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 25.07.2025 - 10:15