Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Jeśli ostatnia cyfra [...] pisz [...], Jak to mam napisać ? Proszę o pomoc ...
marekpb
post
Post #1





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 3.09.2007
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Witam !
Mam do was pytanie, jak napisać takie coś. Jeśli ostatnia cyfra w liczbie to 2, 3, 4 to pisz np. butelki a jeśli jest inaczej pisz butelek a gdy równa się 1 pisz butelka. Do czego mi to potrzebne chyba każdy wie, ponieważ w j.polskim jest tak:
1 butelka
2 butelki
3 butelki
4 butelki
5 butelek
6 butelek
21 butelek
22 butelki
23 butelki
31 butelek
32 butelki
itp. chyba wydać jak wyraz się zachowuje, dlatego potrzebuje takiego kodu, a nie wiem jak go napisać.

Uczę się PHP z książek i na własnych ćwiczeniach praktycznych, sam sobie stawiam zadania i staram się je rozwiązać, ale czasem potrzebuje waszej pomocy, wskazówek. Proszę was o pomoc jak to trzeba napisać. Z góry dzięki. Pozdrawiam.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
WebCM
post
Post #2





Grupa: Zarejestrowani
Postów: 375
Pomógł: 20
Dołączył: 28.07.2006

Ostrzeżenie: (0%)
-----


  1. <?php
  2. $x = 23; //Przykładowo
  3. if($x == 1)
  4. {
  5. $txt = 'butelka';
  6. }
  7. else
  8. {
  9. switch( $x[strlen()-1] )
  10. {
  11. case 2: case 3: case 4: $txt = 'butelki'; break;
  12. /* i tak dalej */
  13. }
  14. }
  15. ?>


--------------------
„Jesteśmy różni, pochodzimy z różnych stron Polski, mamy różne zainteresowania, ale łączy nas jeden cel. Cel ten to Ojczyna, dla której chcemy żyć i pracować.” Roman Dmowski
Go to the top of the page
+Quote Post
marekpb
post
Post #3





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 3.09.2007
Skąd: Kraków

Ostrzeżenie: (0%)
-----


A czy mógłbyś mi ogólnie wytłumaczyć jak to działa ? I co ma być wyświetlane w echo ? Chyba $txt ? I co ma oznaczać i tak dalej ? Co musze tam dopisywać ? Byłbym ci wdzięczny za odpowiedź. Teraz jest już późno, rano się pobawie z tym.
Go to the top of the page
+Quote Post
wipo
post
Post #4





Grupa: Zarejestrowani
Postów: 856
Pomógł: 19
Dołączył: 30.08.2005
Skąd: 100lica

Ostrzeżenie: (0%)
-----


webcm zapomniał jednej rzeczy
  1. <?php
  2. $x = 23; //Przykładowo
  3. if($x == 1)
  4. {
  5. $txt = 'butelka';
  6. }
  7. else
  8. {
  9. switch( $x[strlen()-1] )
  10. {
  11. case 2: case 3: case 4: $txt = 'butelki'; break;
  12. //nowa linijka
  13. default: $txt='butelek';
  14. }
  15. }
  16. //nowa linijka - aby pojawilo sie na ekranie
  17. echo $x.' '.$txt;
  18. ?>


--------------------
Go to the top of the page
+Quote Post
nevt
post
Post #5





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

Ostrzeżenie: (0%)
-----


powyższe są błędne dla 12, 13 i 14 butelek, lepiej użyj:
  1. <?php
  2. $liczba = 22;
  3. $opis = 'butel';
  4. if($liczba == 1)
  5. $opis.= 'ka';
  6. elseif(in_array($liczba % 10, array(2, 3, 4)) and !in_array($liczba, array(12, 13, 14)))
  7. $opis .= 'ki';
  8. else
  9. $opis .= 'ek';
  10. echo "$liczba $opis";
  11. ?>


--------------------

-
Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... -
Go to the top of the page
+Quote Post
Spykaj
post
Post #6





Grupa: Zarejestrowani
Postów: 104
Pomógł: 3
Dołączył: 30.05.2008
Skąd: Białystok

Ostrzeżenie: (0%)
-----


nevt: przecież ty też kompletnie źle zrobiłeś sleep.gif spróbuj np. 112

Zaraz ci zrobię poprawnie, poczekaj

  1. <?php
  2. function butelki($liczba){
  3. if($liczba == 1)return 'butelka';
  4. elseif( ($liczba%10==&& $liczba%100!=12) || 
  5. ($liczba%10==&& $liczba%100!=13) || 
  6. ($liczba%10==&& $liczba%100!=14))
  7. return 'butelki';
  8. else return 'butelek';
  9. }
  10.  
  11. for($liczba=0; $liczba<=200; $liczba++){
  12. echo "$liczba ".butelki($liczba)."<br>";
  13. }
  14. ?>


Liczę na pomógł smile.gif


BTW: JĘZYK POLSKI ROX biggrin.gif

Ten post edytował Spykaj 27.06.2008, 09:05:59


--------------------
?>
Go to the top of the page
+Quote Post
nevt
post
Post #7





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

Ostrzeżenie: (0%)
-----


no przecież wystarczy drobna poprawka (jakoś tak podświadomie ograniczyłem się do 1 setki ...)
  1. <?php
  2. elseif(in_array($liczba % 10, array(2, 3, 4)) and !in_array($liczba % 100, array(12, 13, 14)))
  3. ?>

dlaczego piszesz jakby to wcale nie działało ? cyt."ty też kompletnie źle zrobiłeś"


--------------------

-
Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... -
Go to the top of the page
+Quote Post
marekpb
post
Post #8





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 3.09.2007
Skąd: Kraków

Ostrzeżenie: (0%)
-----


A jak to mogę zastosować w praktyce ? Bo z formularza pobiera mi $ilość i chcę żeby do tej zmiennej dostosowywało się to słowo. Jak powinien wyglądać ten kod i co musi być w echo ? Chyba rozumiecie o co mi chodzi ?


Edit:
Chyba mi się udało to zrobić tyle, że wywaliłem linijkę z for i zmieniłem w następnej linijce zmienną z kody "Spykaj" [tyle że powinno być ze słowem opon ale to już pryszcz]. I niby działa super. Ten drugi sposób "nevt" też działa. Wielkie dzięki. Oczywiście pomógł leci do was. Jak coś nie będę wiedział to napisze, bo widzę, że jesteście skłonni do pomocy. HEHE ! Jeszcze raz dzięki. smile.gif

Ten post edytował marekpb 27.06.2008, 23:24:51
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 03:34