![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 239 Pomógł: 0 Dołączył: 2.06.2011 Ostrzeżenie: (0%) ![]() ![]() |
Mam kod z manuala:
Nie rozumiem, na czym polega funkcja "cmp". Umieszcza się do niej dwie informacje, tj. $a i $b. Jeśli $a to nazwy typu "a", "b" itd., a $b to 4, 1 itp. to skąd w kodzie jest coś takiego "$a == $b" - przecież literka nigdy nie będzie równa liczbie. Czy ktoś może mi pokazać jakiś prosty przykład? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 319 Pomógł: 118 Dołączył: 26.11.2003 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Niech ktoś mnie poprawi, jeśli palnę głupotę, ale wydaje mi się, że przy tym sortowaniu występuje algorytm przez wstawianie (tak się nazywa? Myślałem, że przez porównywanie (IMG:style_emoticons/default/wink.gif) ). Masz tutaj przykład:
http://edu.i-lo.tarnow.pl/inf/alg/003_sort/0010.php Co do callbacka, analogicznie jak tam opisali, porównujesz kolejno ze sobą elementy i sortujesz. $a i $b - co możesz sobie wyświetlić, to są dwie wartości z tablicy (nie klucze), dlatego też, nie ma porównań typu a < 1, ponieważ to jest przykład do sortowania tablicy z wartościami liczbowymi. Dodaj echo do każdej zmiennej i trochę Ci się rozjaśni |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 239 Pomógł: 0 Dołączył: 2.06.2011 Ostrzeżenie: (0%) ![]() ![]() |
Twój link wiele wyjaśnił, ale zastanawiam się, w jaki sposób można to wykorzystać?
Bo w sumie funkcja ta tylko posortowała wyniki od najmniejszej do największej wartości, co można uzyskać w prostszy sposób |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 319 Pomógł: 118 Dołączył: 26.11.2003 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
zwracając odpowiedni wynik w Twojej funkcji, możesz stworzyć dowolne sortowanie, np. najpierw parzyste, później nie, albo najpierw wyrazy 3 literowe, później dwu itd itd. Nie musisz porównywać tutaj cyfr, możesz zrobić tutaj funkcje dla tekstu
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 239 Pomógł: 0 Dołączył: 2.06.2011 Ostrzeżenie: (0%) ![]() ![]() |
Możesz pokazać przykład? Czy użyłeś kiedyś tej funkcji do czegoś, co naprawdę Ci się przydało?
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 324 Pomógł: 105 Dołączył: 7.08.2012 Ostrzeżenie: (0%) ![]() ![]() |
usort świetnie nadaje się do sortowania tablic wielowymiarowych po jakiejś wartości z podtalicy.
Ja np. używałem usort ostatnio przy sortowaniu takiej tablicy:
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 239 Pomógł: 0 Dołączył: 2.06.2011 Ostrzeżenie: (0%) ![]() ![]() |
i właśnie nie rozumiem, co Ci w tym kodzie dało "$a['dateline'] - $b['dateline']"
bardzo proszę o jakiś ludzki przykład, oparty na jakimś życiowym doświadczeniu |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 324 Pomógł: 105 Dołączył: 7.08.2012 Ostrzeżenie: (0%) ![]() ![]() |
Każde sortowanie polega na przyrównywaniu kolejnych elementów ze sobą i ustalanie ich pozycji w szeregu.
I do tego właśnie wykorzystuje się sortowanie szybkie dla kolejnych elementów sortowanej tablicy. Funkcje sort itd. robią dokładnie to samo, tylko mają z góry zaprogramowane metody sortowania, że od największej do najmniejszej, że alfabetycznie, naturalnie, itp. usort idzie dalej. Pozwala posortować coś, czego standardowe algorytmy sortowania PHP nam nie umożliwiają. Wszystko co trzeba zrobić, to napisać małą funkcję, która dowolne dwa elementy porówna i zwróci wartość 0 (elementy są takie same), ujemną (pierwszy element będzie przed drugim, czyli jest "mniejszy") lub dodatnią (pierwszy będzie za drugim, czyli jest większy). Jak w życiu natrafisz na problem posortowania czegoś, co nie będzie podchodziło pod żadną z gotowych funkcji sortowania, to z pomocą przyjdzie usort. Mój przykłąd użycia powyżej. Było tego więcej, ale teraz nie pamiętam już dokładnie. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 3.10.2025 - 01:51 |