Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sortowanie tablic a polskie znaki.
Forum PHP.pl > Forum > PHP
*_ENIGMA
Witajcie!

Mam taką tablicę (niektóre nazwy są celowo błędne aby sprawdzić skrypt; poniższe zapisy są wynikiem print_r() ):

Cytat
Array ( [0] => Wrocław [1] => Warszawa [2] => Chełm [3] => Ćmiekowo [4] => Gryfów [5] => Gdynia [6] => Gdąsk [7] => Wrocław [8] => Wrocław )


po zastosowaniu funckji sort() dostaję taki wynik:

Cytat
Array ( [0] => Chełm [1] => Gdynia [2] => Gdąsk [3] => Gryfów [4] => Warszawa [5] => Wrocław [6] => Wrocław [7] => Wrocław [8] => Ćmiekowo )


...

(zobaczcie na kolejność - część jest alfabetycznie, ale znów Ćmiekowo jest na końcu, a Gdąsk jest za Gdynia zamiast przed. Wygląda tak jakby najpierw szła kolejność według alfabetu angielskiego, a potem reszta znaków polskich).


Dlaczego nie sortuje mi według alfabetu polskiego?? Jak to zrobić??
Dodam, że kodowanie dokumentu mam ustawione na ISO-8859-2.
Używałem praktycznie wszystkich funkcji sortujących i nic z tego...

Proszę o pomoc, bo to dla mnie pilne :-(

Z poadrowieniami!
Tajny
poczytaj o strcoll i usort

  1. <?php
  2.  
  3. // ustaw na kodowanie ISO-8859-2
  4. setlocale(LC_ALL, 'Polish_Poland.28592');
  5. usort($tablica_do_posortowania, 'strcoll');
  6.  
  7. ?>
BarryWhite
no dobra czytaj czytaj bla bla... aż nabierzeż koloru. nie ma nikt czegoś gotowego? przecież po to jestem na forum żeby się informacjami wymieniać z ludzmi któży mają więcej doświadczenia. To nie ma być żadne pole do popisu dla wszystko wiedzących którzy może jeszcze na to czekają na "zapłać to dowiesz się". niestety ale w ten sposób odbieram ostatni thread.
Więc jeszcze raz moje pytanko dla wszystkich które z resztą zostało wyżej już zadane. DZIĘKI ZA TRUDY I POŚWIĘCONY CZAS.
nospor
że tak brzydko się zapytam: dawno nie sikałeś?

Spojrz na date tematu i nie nerwój sie nadaremne... smile.gif

zamykam by jeszcze ktos sie nie popisał

ps: jakby co to na PW proszę bo może czegoś nie załapałem

edit: otwieram by Barry mogl dopytac o reszte
BarryWhite
Cytat(Tajny @ 29.07.2005, 00:40:52 ) *
poczytaj o strcoll i usort

  1. <?php
  2.  
  3. // ustaw na kodowanie ISO-8859-2
  4. setlocale(LC_ALL, 'Polish_Poland.28592');
  5. usort($tablica_do_posortowania, 'strcoll');
  6.  
  7. ?>



więc mam jak powyżej i nadal nie funkcjonuje. kodowanie na iso 8859.2 ustawione. kod u mnie wygląda następująco:
setlocale(LC_ALL, 'Polish_Poland.28592');
usort($p_polish_towns,'strcoll');
foreach($p_polish_towns AS $towns)
{
echo "<option>$towns\n";
}

co z tym strcoll? brak definicji? gdzie i jak?
sortowanie funkcjonuje z literami podstawowymi a nie z polskimi. ł, ą, ć ... podaje za Z. ma może ktoś jakieś rozwiązanie? Dzięki.
nospor
Cytat
co z tym strcoll? brak definicji? gdzie i jak?
Jeszcze sie wtrące na chwilke.
W drugim poscie napisano:
Cytat
poczytaj o strcoll i usort
Ciezko poczytac w manualu?
http://pl.php.net/manual/pl/function.strcoll.php

Krzyczysz na ludzi ze każa poczytać, ale nie wyobrazasz chyba sobie ze ci ludzie będą cytowac manuala tylko dlatego ze tobie sie tam niechce zajrzec?

Wiec nastepnym razem nie pisz:
Cytat
co z tym strcoll? brak definicji
a zajrzyj najpierw tam gdzie trzeba

To tyle wtrącania smile.gif
legorek
Nie wiem czy autor potrzebuje jeszcze pomocy:
Dla wersji PHP 4.4 - 6.0
  1. <?php
  2. setlocale(LC_COLLATE, 'pl_PL');
  3. sort($array, SORT_LOCALE_STRING);
  4. ?>

Dla 6.0:
  1. <?php
  2. i18n_loc_set_default(LC_COLLATE, 'pl_PL');
  3. sort($array, SORT_LOCALE_STRING);
  4. ?>
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.