saper
13.08.2003, 11:20:48
Pewnego wieczora stwierdzilem ze przydalaby się na mojej stronie ankieta, wiec ja napisalem. Pomyslalem ze przedstawie wyniki w formie slownej by bylo oryginalniej

. No i tu wyszedl na wieszch pewien ciekawy problem. Jak sprawić by slowa dobierane do liczby glosow byly poprawnie odmienione? Na szczescie mamy tutaj zachowana pewna prawidlowosc ktora powtarza sie zawsze. Mianowicie wszystkie liczby konczace sie cyfra 1, 5, 6, 7, 8, 9 i 0 maja odmiane ...głosów (np. 21 głosów), wszystkie liczby konczace sie cyfra 2, 3 i 4 maja odmniane ...głosy (np. 34 głosy). Jedynym wyjatkiem od tej reguly w naszej ankiecie bylaby cyfra 1 ktora ma odmiane ...głos (1 głos).
Teraz moje pytanie: "Jaki skrypt napisać (przy uzyciu jakich funkcji) by rozpoznawal ostatnia cyfre w liczbie? Macie jakies pomysly?".
majkel
13.08.2003, 11:44:23
Skrypcik...
[php:1:bc0700374d]
<?
//na początek wrzuć jakąś liczbę
if(substr($liczba,-2)==1) // tu jest substr($liczba,-2), bo może być 1 lub 11
{ echo("głos"); }
elseif(substr($liczba,-1)==2 || substr($liczba,-1)==3 || substr($liczba,-1)==4)
{ echo("głosy"); }
elseif((substr($liczba,-2)>5 && substr($liczba,-2)<21) || substr($liczba,-1)==1 || substr($liczba,-1)==5 ||
substr($liczba,-1)==6 || substr($liczba,-1)==7 || substr($liczba,-1)==8 || substr($liczba,-1)==9) //od liczby 5 do 21 jest
"głosów", a reszta już normalnie
{ echo("głosów"); }
?>[/php:1:bc0700374d]
Nie mam pewności czy działa, bo nie mam w tej chwili gdzie sprawdzić. Jak działa, to daj znać. Jak nie działa... to też daj znać i powiedz co nie działa.
majkel
13.08.2003, 11:46:01
P.S. 18 linia to komentarz
zombie
13.08.2003, 11:47:00
uaktualniony:
[php:1:56856b8aaf]<?php
$string = "454316";
if (strlen($string) == 1){$last = $string[(strlen($string)-1)];}
else {$last = substr($string, -2);}
?>[/php:1:56856b8aaf]
majkel
13.08.2003, 11:49:40
Można wpisać liczbę ujemną, wtedy zostawi ostatnią i wyrzuci resztę. Poza tym twój kod wyrzuci ostatnią a zostawi resztę... chyba... bo jak mówię nie mam gdzie sprawdzić... :?
Nitro
13.08.2003, 14:36:10
Można i tak:
[php:1:bb071fe565]<?php
function koncowka($amount) {
if ($amount%10==0 || ($amount%100>10 && $amount%100<20)) { $buf="głosów"; }
else if ($amount%10>1 && $amount%10<5) { $buf="głosy"; }
else if ($amount==1) { $buf="głos"; }
else { $buf="głosów"; }
return $buf;
}
?>[/php:1:bb071fe565]
saper
13.08.2003, 15:57:59
Dziekuje za pomoc! Sposob Nitra dziala bez zarzutu. Co do sposobu majkela to nie sprawdzalem - Nitro wyrazil to nieco zwiezlej - ale dziekuje za checi