![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 1 879 Pomógł: 230 Dołączył: 20.03.2005 Skąd: Będzin Ostrzeżenie: (0%) ![]() ![]() |
Witam,
mam problem z przetworzonymi danymi i nie chcą się posortować w tak jak ja żądam. Korzystam/korzystałem z dwóch rozwiązań które tutaj przedstawię: Na początek dane wejściowe - nieposortowane:
Korzystając z funkcji array_multisort()
Otrzymuje dane posortowane, ale wg ID, a na tym mi nie zależy. Dlatego wykorzystałem funkcję multisort() dodaną do komentarza funkcji sort() a przeze mnie odrobinę zmodyfikowaną (chodzi o kolejnosć ASC na DESC)
Skrypt sortuje bardzo dobrze. Tylko dot. subtablicy 'punkty' ale pozostałe już nie sortuje. jak naprawić ten błąd ? jak zmodyfikowac funkcję aby pozostałe klucze też sortowała ? wyniki tej funkcji:
Czy ktoś ma pomysł jak to rozwiązać ? Szukając na forum, google - to tylko na php.net spotkałem rozwiązanie które mnie satysfakcjonowało, a na innych stronach ogranicza się bez ID. Inaczej się dzieje tak jak w przypadku funkcji array_multisort() Sortuje prawidłowo, to co chcę, ale nie przypisuje danych posortowanych do pierwszorzędnej tablicy. |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 226 Pomógł: 61 Dołączył: 20.08.2010 Ostrzeżenie: (0%) ![]() ![]() |
Raczej nie posortujesz takiej tablicy przy użyciu array_multisort.
Użyj uasort:
Funkcja compare() porównuje dwa "zestawy danych" (tablice $arr1, $arr2). Jeśli zwróci liczbę MNIEJSZĄ od zera, to w posortowanej tablicy pierwszy zestaw będzie PRZED drugim, a jeśli WIĘKSZĄ od zera, to pierwszy zestaw będzie ZA drugim. Jeśli zwróci 0, to kolejność jest niezdefiniowana ($arr1 i $arr2 są równe). Całość posortuje nam tabelę rosnąco, więc musimy mnożyć różnice razy -1 (albo po sortowaniu użyć array_reverse) -------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 1 879 Pomógł: 230 Dołączył: 20.03.2005 Skąd: Będzin Ostrzeżenie: (0%) ![]() ![]() |
Na to wychodzi że ja sobie życie komplikowałem tamtym skryptem, a Ty rozwiązałeś mój problem w prosty sposób.
Sam kiedyś musiałem użyć tą funkcję, ale nie potrafiłem ją przetłumaczyc na swój język. Teraz Ty świetnie wytłumaczyłeś i na przyszłość będę pamiętał jak korzystać z funkcji porównawczej. Dziękuje ![]() |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 05:28 |