![]() |
![]() |
![]()
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:
|
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Funkcje używane jako argument do sortowania nie ograniczają się do -1, 0 i 1. Jakakolwiek ujemna wartość zadziała jak -1, a jakakolwiek dodatnia wartość zadziała jak 1. Zauważ, że przy A - B zachodzi taka sama zależność jak u Ciebie:
A - B = 0, gdy A = B A - B < 0, gdy A < B A - B > 0, gdy A > B Ty sortujesz malejąco, więc masz te znaki odwrotnie. Operator <=> ma taką zaletę, że zadziała nie tylko na liczbach. Zwraca -1, 0 lub 1 w zależności od tego która strona jest większa. Kiedyś wymyśliłem metodę na zapamiętanie czy powinno się zwrócić -1 czy 1. Otóż funkcja dla sortowania odpowiada na pytanie: Czy te elementy powinno się zamienić miejscami? Możliwe odpowiedzi to: TAK (1), NIE (-1), NIE WIEM (0). I tak na przykładzie Twojego kodu:
Jeżeli osoba A ma większe wynagrodzenie niż osoba B, wtedy funkcja zwraca wartość dodatnią. Oznacza to, że zamieniamy miejscami A i B, mając teraz B i A. I to się zgadza, bo B < A, czyli posortowaliśmy rosnąco. Ten post edytował SmokAnalog 19.03.2018, 22:33:43 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 13.10.2025 - 12:10 |