![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 392 Pomógł: 7 Dołączył: 11.05.2008 Ostrzeżenie: (0%) ![]() ![]() |
Na wielu stronach www można znaleźć liczniki osób. Jednak z reguły treść jest taka: "licznik osób" lub odwiedziło nas osób:"
Ja natomiast chciałbym stworzyć licznik bardziej inteligentniejszym i w zależności od tego jaka ilość osób będzie w zmiennej dopasuje on odpowiednie sformuowanie i wyświetli je. Problemu by nie było gdybym wiedział jak to ukrócić. Przecież nie mogę pisać warunku dla każdej liczby. Chodzi o to żeby skrypt brał pod uwagę dwie ostatnie cyfry z całego ciągu znaków. Np.: Jak mam 113863 osoby (to tylko 63). Oczywiście jeśli ciąg jest większy od dwucyfrowej liczby. No i jeszcze jakiś wyjątek dla liczby 1, ponieważ nie może być 1 osób tylko 1 osoba, ale już 11 osób, ...,111 osób, itd. Podobnie dla 2 będzie osoby, dla 12 osób, dla 22 osoby, 32 osoby, ..., 102 osoby, itd Dla pozostałych cyfr według powyższych reguł. To trzeba wziąć pod uwagę! Oczywiście takie rozwiązanie można by zastosować nie tylko w licznikach. Na razie kod wygląda tak:
Mam nadzieję, że to dobra pętla do tego zadania. Może da się to jakoś uprościć żeby nie wpisywać tylu warunków. Jestem też otwarty na inne rozwiązania jeżeli moje okaże się błędne!!! Ten post edytował Szunaj85 9.09.2008, 21:23:04 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 142 Pomógł: 35 Dołączył: 5.12.2006 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
funkcja zdefiniowana jest tak (prawiłem ją nieco):
Kod function odmiana( $counter ) { if( $counter == 1 ) return 'osoba'; else { $sufix = $counter % 100; if( $sufix > 11 && $sufix < 15 ) return 'osób'; else { $liczba = $sufix % 10; switch( $liczba ) { case 0: case 1: case 5: case 6: case 7: case 8: case 9: return 'osób'; case 2: case 3: case 4: default: return 'osoby'; } } } } i przykład użycia (co by nie było wątpliwości co i jak):
co daję następujący wynik: 13 osób 1 osoba 101 osób 123 osoby 112 osób 197 osób @moderatorzy: jak się wkleja kod switch'a w PHP to dziwnie ucina... |
|
|
![]() ![]() |
![]() |
Aktualny czas: 5.10.2025 - 16:27 |