Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] jak ustawic tablice od najwiekszej wartosci
Forum PHP.pl > Forum > PHP
AndyPSV
Mam takie cos, chce ustawic ta tablice po najwiekszej wartosci "e_months0" (teraz jest dobrze ustawiona, ale jak zrobic skrypt, ktory by ustawial ja?):

  1. 0 =>
  2. 'id' => '1',
  3. 'nick' => 'AndyPSV',
  4. 'status' => 'admin',
  5. 'first_name' => 'Andrzej Jeziorski',
  6. 'c_months3' => 0,
  7. 'c_months1' => 0,
  8. 'c_months0' => 5,
  9. 'c_months_now' => 3,
  10. 'e_months3' => '',
  11. 'e_months1' => '',
  12. 'e_months0' => '100',
  13. 'this_month' => 500,
  14. ),
  15. 1 =>
  16. 'id' => '2',
  17. 'nick' => 'Toruniak',
  18. 'status' => 'caller',
  19. 'first_name' => '',
  20. 'c_months3' => 0,
  21. 'c_months1' => 0,
  22. 'c_months0' => 0,
  23. 'c_months_now' => 0,
  24. 'e_months3' => '',
  25. 'e_months1' => '',
  26. 'e_months0' => '',
  27. 'this_month' => 0,
  28. ),
  29. )
everth
usort()
AndyPSV
zastosowalem ta funkcje, ale nie dziala - widac, ze na przykladzie tak samo nie jest to co chce uzyskac:

CHCE posortowac po NAJWIEKSZEJ wartosci pole, ma ktos jakas funkcje?

  1. Przykład #2 Przykład użycia usort() do sortowania wielowymiarowych tablic
  2. <?php
  3. function cmp($a, $b)
  4. {
  5. return strcmp($a["owoc"], $b["owoc"]);
  6. }
  7.  
  8. $owoce[0]["owoc"] = "cytryny";
  9. $owoce[1]["owoc"] = "jabłka";
  10. $owoce[2]["owoc"] = "winogrona";
  11.  
  12. usort($owoce, "cmp");
  13.  
  14. while (list($key, $value) = each($owoce)) {
  15. echo "\$owoce[$key]: " . $value["owoc"] . "\n";
  16. }
#luq
Cytat(AndyPSV @ 11.09.2010, 03:20:26 ) *
zastosowalem ta funkcje, ale nie dziala

To dziwne bo u mnie działa...
AndyPSV
Wynik, nie dziala - moze cos robie zle?

  1. $array[0]: 100 $array[1]: 400 $array[2]: 50


a ma byc tak:
  1. $array[0]: 400 $array[1]: 100 $array[2]: 50



  1. <?php
  2. function cmp($a, $b)
  3. {
  4. return strcmp($a["e_months0"], $b["e_months0"]);
  5. }
  6.  
  7. $array = array (
  8. 0 =>
  9. 'id' => '1',
  10. 'nick' => 'AndyPSV',
  11. 'status' => 'admin',
  12. 'first_name' => 'Andrzej Jeziorski',
  13. 'c_months3' => 0,
  14. 'c_months1' => 0,
  15. 'c_months0' => 5,
  16. 'c_months_now' => 3,
  17. 'e_months3' => '',
  18. 'e_months1' => '',
  19. 'e_months0' => '100',
  20. 'this_month' => 500,
  21. ),
  22. 1 =>
  23. 'id' => '2',
  24. 'nick' => 'Toruniak',
  25. 'status' => 'caller',
  26. 'first_name' => '',
  27. 'c_months3' => 0,
  28. 'c_months1' => 0,
  29. 'c_months0' => 0,
  30. 'c_months_now' => 0,
  31. 'e_months3' => '',
  32. 'e_months1' => '',
  33. 'e_months0' => '50',
  34. 'this_month' => 0,
  35. ),
  36. 2 =>
  37. 'id' => '2',
  38. 'nick' => 'Toruniak',
  39. 'status' => 'caller',
  40. 'first_name' => '',
  41. 'c_months3' => 0,
  42. 'c_months1' => 0,
  43. 'c_months0' => 0,
  44. 'c_months_now' => 0,
  45. 'e_months3' => '',
  46. 'e_months1' => '',
  47. 'e_months0' => '400',
  48. 'this_month' => 0,
  49. ),
  50. );
  51.  
  52. usort($array, "cmp");
  53.  
  54. while (list($key, $value) = each($array)) {
  55. echo "\$array[$key]: " . $value["e_months0"] . "\n";
  56. }
  57.  
  58. ?>
#luq
Porównujesz inty funkcją strcmp... Już sam początek nazwy tej funkcji mówi, że służy do stringów.
Musisz sprawdzać warunek, spójrz na 1. example.
AndyPSV
prosilbym o kod, gdybym wiedzial jak to zrobic nie prosilbym o pomoc
jak to zrobic?

dziala! zrobione, dzieki

  1. <?php
  2.  
  3. $array = array (
  4. 0 =>
  5. 'id' => '1',
  6. 'nick' => 'AndyPSV',
  7. 'status' => 'admin',
  8. 'first_name' => 'Andrzej Jeziorski',
  9. 'c_months3' => 0,
  10. 'c_months1' => 0,
  11. 'c_months0' => 5,
  12. 'c_months_now' => 3,
  13. 'e_months3' => '',
  14. 'e_months1' => '',
  15. 'e_months0' => '100',
  16. 'this_month' => 500,
  17. ),
  18. 1 =>
  19. 'id' => '2',
  20. 'nick' => 'Toruniak',
  21. 'status' => 'caller',
  22. 'first_name' => '',
  23. 'c_months3' => 0,
  24. 'c_months1' => 0,
  25. 'c_months0' => 0,
  26. 'c_months_now' => 0,
  27. 'e_months3' => '',
  28. 'e_months1' => '',
  29. 'e_months0' => '50',
  30. 'this_month' => 0,
  31. ),
  32. 2 =>
  33. 'id' => '2',
  34. 'nick' => 'Toruniak',
  35. 'status' => 'caller',
  36. 'first_name' => '',
  37. 'c_months3' => 0,
  38. 'c_months1' => 0,
  39. 'c_months0' => 0,
  40. 'c_months_now' => 0,
  41. 'e_months3' => '',
  42. 'e_months1' => '',
  43. 'e_months0' => '400',
  44. 'this_month' => 0,
  45. ),
  46. );
  47.  
  48. usort($array, create_function('$a,$b','return $b["e_months0"] - $a["e_months0"];'));
  49.  
  50. echo '<pre>'.var_export($array);
  51.  
  52. ?>

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.