[PHP]Różne wyniki sortowania w zależności od wersji PHP |
[PHP]Różne wyniki sortowania w zależności od wersji PHP |
25.10.2023, 12:22:57
Post
#1
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 4.12.2020 Ostrzeżenie: (0%) |
Cześć mam problem lub zagwostke. Mam taki kod który ma mi tablice posortować rosnąco jednak najpierw liczby parzyste a potem nieparzyste. Korzystam z funkcji usort. I teraz tak jak odpalam ten kod w PHP w wersji 5.4 to sortuje w taki sposób jak opisałem. Jednak w wersjach od 7 w góre sortuje, już od najmniejszej do największej po kolei. Z tego co znalazłem w sieci to i w wersji 5 jak i 7 usort korzysta z QuickSorta wiec nie wiem co może być przyczyną.
PS. Napisałem sobie ten warunek również w inny sposób i już poprawnie mi sortuje, jednak nie mam pojęcia czemu pierwszy zachowuje się w ten sposób 1. Wersja 1
Wersja poprawnie działająca
Ten post edytował soltysadam 25.10.2023, 12:23:58 |
|
|
25.10.2023, 13:05:42
Post
#2
|
|
Grupa: Zarejestrowani Postów: 2 592 Pomógł: 445 Dołączył: 12.03.2007 Ostrzeżenie: (0%) |
Odnośnie zmian w sortowaniu:
https://bugs.php.net/bug.php?id=69158 W PHP od 7 przekazywane parametry są w innej kolejności niż w PHP 5 i poniżej. Także Twój kod powinien porównywać te parametry bez względu na ich kolejność. Odnośnie Twojego pierwszego kodu to ma błąd - drugie porównanie porównuje $e2 do zera bez modulo
Kod Output for 5.6.40 | released 2019-01-10 | took 18 ms, 16.62 MiB 8 | 7 6 | 8 8 | 3 9 | 8 4 | 8 8 | 1 0 | 8 8 | 5 2 | 8 6 | 2 6 | 4 0 | 6 2 | 0 4 | 2 3 | 1 3 | 5 7 | 3 9 | 3 5 | 3 9 | 5 7 | 9 5 | 7 Array ( [0] => 0 [1] => 2 [2] => 4 [3] => 6 [4] => 8 [5] => 1 [6] => 3 [7] => 5 [8] => 7 [9] => 9 ) Kod Output for 7.4.33 | released 2022-11-03 | took 23 ms, 14.25 MiB
5 | 7 7 | 3 5 | 3 7 | 1 5 | 1 3 | 1 7 | 8 5 | 8 3 | 8 1 | 8 7 | 2 5 | 2 3 | 2 1 | 2 8 | 2 7 | 0 3 | 0 8 | 0 0 | 2 7 | 4 3 | 4 8 | 4 0 | 4 2 | 4 7 | 9 9 | 6 5 | 6 1 | 6 4 | 6 8 | 6 Array ( [0] => 0 [1] => 2 [2] => 4 [3] => 6 [4] => 8 [5] => 1 [6] => 3 [7] => 5 [8] => 7 [9] => 9 ) -------------------- |
|
|
26.10.2023, 10:13:52
Post
#3
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 4.12.2020 Ostrzeżenie: (0%) |
Dziękuje Ci bardzo, faktycznie przez 40 minut parzyłem w ten kod i nie widziałem tego błędu
|
|
|
Wersja Lo-Fi | Aktualny czas: 28.04.2024 - 08:08 |