Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Sortowanie liczb w tablicy
Forum PHP.pl > Forum > Przedszkole
miras
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!
Spawnm
arsort
miras
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...
ano
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. ?>
miras
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ść
  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);
miras
no niestety nadal nic...
Gość
Coś oszukujesz smile.gif Zobacz wynik
miras
ja probuję w ten sposób i nie działa... :/ http://3v4l.org/2hPcq
Gość
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
miras
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 smile.gif dzięki!
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.