StrCmp
Nevite jak je definovano, ktery retezec je vetsi?
<HTML>Returns < 0 if str1 is less than str2; > 0 if str1 is greater than str2, and 0 if they are equal.</HTML>
Richarde diky.
To jsem vedel.
Zajima me podle ceho se pozna, ze
str1 is less than str2,
tj. jak se ty retezce porovnaji (jake je kriterium, kdyz je to sekvence znaku).
normalne. vemes prvni dva znaky. kdyz je jeden mensi, je ten retezec mensi. kdyz jsou stejny, vemes dalsi dva a porovnavas. kdyz uz jeden retezec skoncil a nemuzes tak brat dalsi znaky, tak je mensi. co je na tom k nepochopeni? nebo ty porovnavas retezce jinak? jak proboha hledas treba v telefonnim seznamu nebo ve slovniku?
Takze 2005-01-15 je mensi nez 2005-02-14.
Jak poznam, ktere z nasledujicich je mensi: a4-z , a-4z?
Jak poznam, ktere z nasledujicich je mensi: a4(z , a4)z?
Je nekde tabulka, ktera porovnava znaky vuci sobe, ktere jsou mensi a ktere vetsi?
Jan, znaky jsou v tzv ASCII kódování. O tom jsi neslyšel? Je to prostě řada znaků a jim odpovídající číslo. Mezera je tuším &x20, 'A' &x40 atd....
To funguje v případě ascii, pokud to doho zamontuješ národní znaky, tak je v systému (na wz) definované tzv LOCALES, kde je sekvence znaků, jak se mají srovnávat. Jako že "č"<"d", akorát teď nevím jak dopadne srovnání třeba "č" a "~", (~ je znak tuším &x7f), ale někde je to jednoznačně nadefinované, nebál bych se toho.
zkus
for($i=32; $i<256; $i++) {
echo chr($i);
}
pozor, toto platí pro osmibitové kódování znaků, u utf-8 je to kapku jinak, tam bude definovaný výčet znaků a jejich kódů a porovnávání bude podle pozice znaku v poli ne podle jeho kódu.
Možná je to trochu zmatené, ale tak to funguje.