Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Sortowanie, usort, klasy
hunter777
post 19.03.2018, 10:23:30
Post #1





Grupa: Zarejestrowani
Postów: 40
Pomógł: 0
Dołączył: 8.02.2017

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


mam problem z funkcją usort, wykonałem proste przykłady gdy tablica była podana w kodzie i funkcja działała ale gdy wykonałem klasę, która tworzy tablicę niestety to nie działa i nie wiem dlaczego, mam informację, że odwołuję się do obiektu, który nie jest tablicą a usort wymaga tablicy ale przecież to jest tablica tylko generowana - pewnie gdzieś tu jest klucz ale nie mogę go znaleźć. Potrzebuję posortować po kolumnie, poniżej kod:

  1. <?php
  2.  
  3.  
  4. class Osoba {
  5.  
  6.  
  7. public $imie;
  8. public $nazwisko;
  9. public $wynagrodzenie;
  10. public $wiek;
  11.  
  12. public function __construct ($imie, $nazwisko, $wynagrodznie, $wiek){
  13. $this->imie = $imie;
  14. $this->nazwisko = $nazwisko;
  15. $this->wynagrodzenie = $wynagrodznie;
  16. $this->wiek = $wiek;
  17.  
  18. }
  19.  
  20. public function wypisz() {
  21. echo $this->imie . ' ' . $this->nazwisko . ' ' . $this->wynagrodzenie . ' ' . $this->wiek .'<br>';
  22. }
  23. }
  24.  
  25.  
  26. $osoby = array();
  27.  
  28. $imiona = array('Andrzej', 'Tomasz', 'Karol', 'Igor', 'Kamil');
  29. $nazwiska = array('Nowak', 'Kowalski', 'Lewandowski', 'Stoch', 'Winiarski');
  30. $wynagrodzenia = array(1500, 1200, 2200, 8000, 5000);
  31. $lata = array(23, 40, 22, 18, 29);
  32.  
  33.  
  34. for($i=0;$i<20;$i++){
  35. $osoby[$i] = new Osoba($imiona[rand(0,4)], $nazwiska[rand(0,4)], $wynagrodzenia[rand(0,4)], $lata[rand(0,4)]);
  36. }
  37.  
  38.  
  39. function build_sorter($key) {
  40. return function ($a, $b) use ($key) {
  41.  
  42. if ($a[$key] == $b[$key]) {
  43. return 0;
  44. }
  45. return ($a[$key] < $b[$key]) ? 1 : -1;
  46.  
  47. };
  48. }
  49. print_r($osoby);
  50.  
  51. usort($osoby, build_sorter('wynagrodzenie'));
  52.  
  53. foreach ($osoby as $osoba) {
  54.  
  55.  
  56. $osoba->wypisz();
  57. }
Go to the top of the page
+Quote Post

Posty w temacie


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: 14.08.2025 - 09:29