Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Sortowanie liczb w tablicy, jw
miras
post
Post #1





Grupa: Zarejestrowani
Postów: 1 004
Pomógł: 9
Dołączył: 18.01.2011
Skąd: Siedlce

Ostrzeżenie: (30%)
XX---


Witam, mam nastepujacy problem... mam tablicy a w niej :

  1. <?php
  2. $tab[0]=12;
  3. $tab[1]=4;
  4. $tab[2]=6;
  5. // itd..
  6. ?>


i potrzebuję wyświetlić te dane z tej tabeli od największej do namniejszej ( malejąco ) da się to jakoś zrobic ?


Dzięki z góry!
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
Spawnm
post
Post #2





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




arsort
Go to the top of the page
+Quote Post
miras
post
Post #3





Grupa: Zarejestrowani
Postów: 1 004
Pomógł: 9
Dołączył: 18.01.2011
Skąd: Siedlce

Ostrzeżenie: (30%)
XX---


może trochę źle napisałem..


mam coś takiego:

  1. <?php
  2. $tab[0]=$kasa.':'.$user; // co daje 123:janek
  3. $tab[1]=$kasa.':'.$user; // co daje 233:franek
  4. $tab[2]=$kasa.':'.$user; // co daje 23:zenek
  5. $tab[3]=$kasa.':'.$user; // co daje 33:pawel
  6. ?>


potem chce to wyświetlić posortowane pod wzgledem 'kasy'

  1. arsort($tab);
  2. $asd=count($tab);
  3. for ($i = 0; $i < $asd; $i++) {
  4. echo $kasa[$i];
  5. echo '<br>';
  6. }
  7.  




i niestety nie wyswietla posortowanego...
Go to the top of the page
+Quote Post
ano
post
Post #4





Grupa: Zarejestrowani
Postów: 435
Pomógł: 40
Dołączył: 16.02.2003
Skąd: Wrocław

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


http://www.php.net/manual/en/function.uasort.php

W Twoim przypadku:
  1. <?php
  2. // Comparison function
  3. function cmp($a, $b) {
  4. list($a) = explode(':', $a, 1);
  5. list($b) = explode(':', $b, 1);
  6.  
  7. if ($a == $b) {
  8. return 0;
  9. }
  10. return ($a < $b) ? -1 : 1;
  11. }
  12.  
  13. uasort($tab, 'cmp');
  14. print_r($array);
  15. ?>
Go to the top of the page
+Quote Post
miras
post
Post #5





Grupa: Zarejestrowani
Postów: 1 004
Pomógł: 9
Dołączył: 18.01.2011
Skąd: Siedlce

Ostrzeżenie: (30%)
XX---


obecny kod:

  1. <?php
  2. function cmp($a, $b) {
  3. list($a) = explode(':', $a, 1);
  4. list($b) = explode(':', $b, 1);
  5.  
  6. if ($a == $b) {
  7. return 0;
  8. }
  9. return ($a < $b) ? -1 : 1;
  10. }
  11.  
  12.  
  13.  
  14. $tab[0]=$kasa.':'.$user; // co daje 123:janek
  15. $tab[1]=$kasa.':'.$user; // co daje 233:franek
  16. $tab[2]=$kasa.':'.$user; // co daje 23:zenek
  17. $tab[3]=$kasa.':'.$user; // co daje 33:pawel
  18.  
  19. uasort($tab, 'cmp');
  20.  
  21. $asd=count($tab);
  22. for ($i = 0; $i < $asd; $i++) {
  23. echo $kasa[$i];
  24. echo '<br>';
  25. }
  26.  
  27. ?>


i nie działa ...;/

Pomoże ktoś ?
Go to the top of the page
+Quote Post
-Gość-
post
Post #6





Goście







  1. function cmp($a, $b) {
  2. $v = floatval($a) - floatval($b);
  3. return ($v == 0) ? 0 : (($v < 0) ? -1 : 1);
  4. }
  5. $tab = array('123:janek', '233:franek', '23:zenek', '33:pawel');
  6. uasort($tab, 'cmp');
  7. print_r($tab);
Go to the top of the page
+Quote Post
miras
post
Post #7





Grupa: Zarejestrowani
Postów: 1 004
Pomógł: 9
Dołączył: 18.01.2011
Skąd: Siedlce

Ostrzeżenie: (30%)
XX---


no niestety nadal nic...
Go to the top of the page
+Quote Post
-Gość-
post
Post #8





Goście







Coś oszukujesz (IMG:style_emoticons/default/smile.gif) Zobacz wynik
Go to the top of the page
+Quote Post
miras
post
Post #9





Grupa: Zarejestrowani
Postów: 1 004
Pomógł: 9
Dołączył: 18.01.2011
Skąd: Siedlce

Ostrzeżenie: (30%)
XX---


ja probuję w ten sposób i nie działa... :/ http://3v4l.org/2hPcq
Go to the top of the page
+Quote Post
-Gość-
post
Post #10





Goście







W swoim kodzie nie masz wywołania uasort, dodatkowo jest to funkcja sortowania z zachowaniem kluczy (tak było prawie od początku w tym wątku, więc pozostawiłem), zatem później wyświetlanie tablicy wg kluczy nie za bardzo ma sens, powinno się zastosować instrukcję foreach. Ewentualnie można wyświetlać tak jak zrobiłeś, ale wtedy zastosować do sortowania funkcję usort
Go to the top of the page
+Quote Post
miras
post
Post #11





Grupa: Zarejestrowani
Postów: 1 004
Pomógł: 9
Dołączył: 18.01.2011
Skąd: Siedlce

Ostrzeżenie: (30%)
XX---


ok, zrobiłem na foreach, poblem w tym, że ta funkcja wyświetla od najmniejszego do największego (rosnąco) a ja potrzebuję odwrotnie...

ok, poradziłem, wystarczyło odwrócić tablice (IMG:style_emoticons/default/smile.gif) dzięki!
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 25.08.2025 - 16:24