Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sortowanie tablicy wielowymiarowej z polskimi znakami
Forum PHP.pl > Forum > PHP
luv
Witam,

Mam taki oto problem. Był on już poruszany wiele razy na różnych forach zwiazanych z php jednak nie moge poradzic sobie z nim i może przedstawie go i napiszę o co mi chodzi.
Stworzyłem sobie wielowymiarową tablicę $tab_absent[]

foreach ($tab_days as $key => $val) {
$tab_absent[] = array('user' => $value_workers, 'section' => $section, 'date' => $val);
}


Zmienne $value_workers przyjmują wartości nazwisk które zawierają polskie litery.
Chciałbym teraz móc sortować tablicę $tab_absent[] rosnąco lub malejąco wg. nazwisk.
Wiem, że można to zrobić za pomocą funkcji multisort w następujacy sposób:

foreach ($tab_absent as $ind => $val) {
$tab_user[$ind] = $val['user'];
$tab_section[$ind] = $val['section'];
$tab_date[$ind] = $val['date'];
}
if ($order_by == 'user' && $sort_order == 'ASC') {
array_multisort($tab_user, SORT_ASC, $tab_section, SORT_ASC, $tab_date, SORT_ASC, $tab_absent);
}
elseif ($order_by == 'user' && $sort_order == 'DESC') {
array_multisort($tab_user, SORT_DESC, $tab_section, SORT_ASC, $tab_date, SORT_ASC, $tab_absent);
}


Skrypt działa jednak nie do końca. Nazwiska z polskimi literami zawsze brane sa na koniec listy.
Wykorzystywałem funkcję setlocale => setlocale(LC_ALL, 'pl_PL', 'pl', 'Polish_Poland.28592');
jednak nic to nie dało.
Czytałem, że taką funkcję sortowania trzeba stworzyć samemu jednak nie wiem jak to zrobić.

Proszę o pomoc w tej sprawie.
Oczekując na odpowiedz, pozdrawiam i z góry dziękuję smile.gif

Luv
darko
Ostatecznie możesz napisać własny komparator i użyć uasort
http://php.net/manual/en/function.uasort.p...uasort-examples
rocktech.pl
Witam.

Zainteresuj się rozszerzeniem php intl.

Collator::sort

  1. $coll = collator_create( 'pl_PL' );
  2. $arr = array( 'at', 'ąs', 'aś' );
  3.  
  4. var_export( $arr );
  5. collator_sort( $coll, $arr );
  6. var_export( $arr );


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.