Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Jeśli ostatnia cyfra [...] pisz [...]
Forum PHP.pl > Forum > Przedszkole
marekpb
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.
WebCM
  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. ?>
marekpb
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.
wipo
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. ?>
nevt
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. ?>
Spykaj
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
nevt
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ś"
marekpb
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
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.