Jump to content

Archived

This topic is now archived and is closed to further replies.

zizou666

Sortowanie tablic w PHP

Recommended Posts

Mam w PHP taką tablicę:

$this->table = Array(
             'w1'=> 'Kobo', 'Abe', 'Kobieta z Wydm',
             'w2'=> 'Sienkiewicz', 'Henryk', 'Potop',
             'w3'=> 'Mickiewicz', 'Adam', 'Pan Tadeusz',
             'w4'=> 'Fredro', 'Aleksander', 'Zemsta',
             'w5'=> 'Mann', 'Tomasz', 'Czarodziejska Góra',
             'w6'=> 'Kapuściński', 'Ryszard', 'Cesarz',
             'w7'=> 'Davis', 'Norman', 'Boże igrzysko',
             'w8'=> 'Melchior', 'Wańkowicz', 'Na tropach smętka',
             'w9'=> 'Łysiak', 'Waldemar', 'Francuska ścieżka',
             'w10'=> 'Ajar', 'Emil', 'Życie przed sobą',
             'w11'=> 'Baker', 'Stephen', 'Jak żyć z neurotycznym kotem'
            
             );

I teraz mam pytanie, jak sortować tą tablice po np pierwszych wartościach (nazwiskach). Da się wogóle? Czy muszę stworzyć tablice wielowymiarową?

Link to comment
Share on other sites

To w ogóle śmiga? Zawsze myślałem, że tablica asocjacyjna to jest przyporządkowanie klucza do wartości, a w tym wypadku wartości jest wiele. Co Ci w sumie zwraca dla klucza?

W klasycznym przypadku sortowanie tablicy asocjacyjnej odbywa się za pomocą funkcji asort() po wartości i ksort() po kluczu.

Link to comment
Share on other sites

No właśnie śmiga ;) Leci przez wszystkie wartości kiedy wyświetlam foreach'em. Ale masz racje, nie da się określić co jest przypisane do którego klucza. Zrobię chyba tablice wielowymiarową i w każdej dam sobie 3 klucze i 3 wartosci.

Link to comment
Share on other sites

Tablica jest źle zdeklarowana. Teraz patrz co się porobiło jak kazałem ją wyświetlić za pomocą print_r:

Cytat
Array

(

[w1] => Kobo

[0] => Abe

[1] => Kobieta z Wydm

[w2] => Sienkiewicz

[2] => Henryk

[3] => Potop

[w3] => Mickiewicz

[4] => Adam

[5] => Pan Tadeusz

[w4] => Fredro

[6] => Aleksander

[7] => Zemsta

[w5] => Mann

[8] => Tomasz

[9] => Czarodziejska GĂłra

[w6] => KapuĹciĹski

[10] => Ryszard

[11] => Cesarz

[w7] => Davis

[12] => Norman

[13] => BoĹźe igrzysko

[w8] => Melchior

[14] => WaĹkowicz

[15] => Na tropach smÄtka

[w9] => Ĺysiak

[16] => Waldemar

[17] => Francuska ĹcieĹźka

[w10] => Ajar

[18] => Emil

[19] => Ĺťycie przed sobÄ

[w11] => Baker

[20] => Stephen

[21] => Jak ĹźyÄ z neurotycznym kotem

)

Indeksy nadane przez ciebie pomieszały się numerycznie, czyli wszystko co oddzieliłeś przecinkiem zostało potraktowane jako kolejny element tablicy. http://edukacyjne.5v.pl/dane.html

Co do sortowania:

http://php.net/manual/en/function.sort.php

http://php.net/manual/en/function.usort.php

http://www.php.net/manual/en/function.asort.php

A tu masz wszystkie funkcje do użycia na tablicach:

http://www.php.net/manual/en/ref.array.php

 

Link to comment
Share on other sites

No tak ;) Ale poradziłem sobie. Zrobiłem tablicę wielowymiarową i przypisałem każdemu elementowi moich małych tablic klucze do każdej ze składowych. Później wykorzystałem multisort wcześniej wyciągając kolumny do jednowymiarowych tablic. Identyczny przykład praktycznie jest na stronie z manualem do php przy multisorcie. Temat do zamknięcia.

Link to comment
Share on other sites



  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...