Autor | Zpráva | ||
---|---|---|---|
simka Profil * |
#1 · Zasláno: 25. 11. 2005, 14:28:20
dejme tomu, že má toto pole:
$x = array ('F', 'C', 'A', 'Č', 'Z'); seřadím jej: sort($x); a vypíšu výsledky: foreach ($x as $k => $h) { echo "$x <br>\n"; } ale č mi to hodí až na konec, tak jak mám udělat, aby se mi to správně seřadilo i při použití češtiny? |
||
igamenir Profil |
#2 · Zasláno: 25. 11. 2005, 15:05:00
To nepůjde tak jednoduše. PHP řadí (pravděpodobně) jenom podle ordinálních hodnot, takže pro jiné řazení si to musíš sám udělat. Slouží k tomu funkce usort, které předáš pole a funkci určující, který ze dvou prvků je větší. viz url=http://mirrors.inway.cz/manual/cs/function.usort.php
V php jsem to zatím nedělal, ale v jiných programovacích jazykách se mi osvědčilo pole, kde index je znak a hodnota je číslo znaku. funkce pak vrací rozdíl hodnot předaných parametrů: $cestina = array('a' => 1, 'á' => 2, 'b' => 3, 'c' => 4, 'č' => 5, atd.); - Je to jenom zjednodušeně. Čeština se běžně řadí na tři průchody (pole): bez většiny diakritiky, s diakritikou a potom velká-malá. |
||
Hugo Profil |
#3 · Zasláno: 25. 11. 2005, 15:10:24
simka
Podívej se do php manuálu. http://mirrors.inway.cz/manual/en/function.sort.php Na položku SORT_LOCALE_STRING to by mělo pomoct. |
||
igamenir Profil |
#4 · Zasláno: 25. 11. 2005, 15:36:05 · Upravil/a: igamenir
Hugo
Tak o tom sem nevěděl. Jak snadné: setlocale(LC_ALL,"cz"); |
||
Časová prodleva: 18 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0