Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]Sortowanie tablicy
Forum PHP.pl > Forum > Przedszkole
krzywy36
Mam przykładowo taką tablicę:
Kod
Array
(
    [02.2011] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 3
            [3] => 4
            [4] => 5
            [5] => 6
            [6] => 7
            [7] => 8
            [8] => 9
            [9] => 10
        )

    [09.2010] => Array
        (
            [0] => 10
            [1] => 5
            [2] => 6
            [3] => 2
            [4] => 8
            [5] => 9
            [6] => 1
            [7] => 1
            [8] => 1
            [9] => 1
        )

    [03.2011] => Array
        (
            [0] => 6
            [1] => 6
            [2] => 7
            [3] => 8
            [4] => 7
            [5] => 6
            [6] => 6
            [7] => 6
            [8] => 6
            [9] => 6
            [10] => 6
        )

)

jak posortować ją wg. daty malejąco? krsort(), sortuje tylko na podstawie liczby do kropki czyli w powyższym przykładzie zwraca:
Kod
Array
(
    [09.2010] => Array
        (
            [0] => 10
            [1] => 5
            [2] => 6
            [3] => 2
            [4] => 8
            [5] => 9
            [6] => 1
            [7] => 1
            [8] => 1
            [9] => 1
        )

    [03.2011] => Array
        (
            [0] => 6
            [1] => 6
            [2] => 7
            [3] => 8
            [4] => 7
            [5] => 6
            [6] => 6
            [7] => 6
            [8] => 6
            [9] => 6
            [10] => 6
        )

    [02.2011] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 3
            [3] => 4
            [4] => 5
            [5] => 6
            [6] => 7
            [7] => 8
            [8] => 9
            [9] => 10
        )

)

jak zrobić, aby lata też były liczone?
CuteOne
a na czas sortowania nie możesz przestawić daty na YYYY-MM ?

  1.  
  2. foreach($tablica as $k => $v) {
  3.  
  4. $nk = explode('.', $k);
  5. $ntablica[$nk[1].'.'.$nk[0]] = $v;
  6. }
  7.  
  8. // i dopiero to sortować ?


szczerze powiedziawszy nigdy nie sortowałem tablic poza mysql, więc może istnieć jakieś lepsze rozwiązanie


Edit:: do autora- daj za mnie "pomógł" Noidei
Noidea
Żeby zrobić takie niestandardowe sortowanie używa się uksort oraz własnej funkcji porównującej dwa klucze tablicy.

Dodatkowo, żeby tablica była posortowana malejąco trzeba jeszcze odwrócić kolejność (array_reverse)

http://ideone.com/odWzg
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.