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:
<?php
class Osoba {
public $imie;
public $nazwisko;
public $wynagrodzenie;
public $wiek;
public function __construct ($imie, $nazwisko, $wynagrodznie, $wiek){
$this->imie = $imie;
$this->nazwisko = $nazwisko;
$this->wynagrodzenie = $wynagrodznie;
$this->wiek = $wiek;
}
public function wypisz() {
echo $this->imie . ' ' . $this->nazwisko . ' ' . $this->wynagrodzenie . ' ' . $this->wiek .'<br>'; }
}
$imiona = array('Andrzej', 'Tomasz', 'Karol', 'Igor', 'Kamil'); $nazwiska = array('Nowak', 'Kowalski', 'Lewandowski', 'Stoch', 'Winiarski'); $wynagrodzenia = array(1500
, 1200
, 2200
, 8000
, 5000
); $lata = array(23
, 40
, 22
, 18
, 29
);
for($i=0;$i<20;$i++){
$osoby[$i] = new Osoba
($imiona[rand(0
,4
)], $nazwiska[rand(0
,4
)], $wynagrodzenia[rand(0
,4
)], $lata[rand(0
,4
)]); }
function build_sorter($key) {
return function ($a, $b) use ($key) {
if ($a[$key] == $b[$key]) {
return 0;
}
return ($a[$key] < $b[$key]) ? 1 : -1;
};
}
usort($osoby, build_sorter
('wynagrodzenie'));
foreach ($osoby as $osoba) {
$osoba->wypisz();
}