Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Sortowanie tablicy wielowymiarowej z polskimi znakami
luv
post
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 24.04.2003
Skąd: Chorzów

Ostrzeżenie: (0%)
-----


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ę (IMG:style_emoticons/default/smile.gif)

Luv
Go to the top of the page
+Quote Post
darko
post
Post #2





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Ostatecznie możesz napisać własny komparator i użyć uasort
http://php.net/manual/en/function.uasort.p...uasort-examples
Go to the top of the page
+Quote Post
rocktech.pl
post
Post #3





Grupa: Zarejestrowani
Postów: 587
Pomógł: 131
Dołączył: 8.02.2010

Ostrzeżenie: (0%)
-----


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 );


Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.09.2025 - 16:51