Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Funkcje drukujące tekst
Forum PHP.pl > Forum > Przedszkole
panksawery
Witam. Prosiłbym o pomoc z 2 prostymi funkcjami. Mianowicie chciałbym aby pierwsza funkcja drukowała dowolny tekst małymi literami, a druga dokładnie ten sam tekst tylko, że wielkimi. Jestem laikiem i stanąłem na punkcie 2. Nie bardzo wiem jak wyciągnąć do drugiej funkcji wynik pierwszej i użyć na nim mb_strtoupper(). Z góry dzięki za pomoc wink.gif

  1. <?php
  2. $drukuj = function(string $tekst) {
  3. print ($tekst);
  4. print PHP_EOL;
  5. };
  6.  
  7. $drukuj("DrUkOwAnIe MaŁyMi LiTeRaMi");
  8. $drukuj('i JeSzCZE RaZ mAłYmI LiTeRaMi');
  9.  
  10. function duzeLitery($drukuj) {
  11. mb_strtoupper($drukuj);
  12. print PHP_EOL;
  13. };
  14.  
  15. duzeLitery($drukuj);
  16. ?>
viking
Wywołaj funkcje po prostu 2x po sobie skoro tekst wejściowy jest ten sam.

  1. function maleLitery($drukuj) {
  2. print mb_strtolower($drukuj);
  3. print PHP_EOL;
  4. };
  5.  
  6. function duzeLitery($drukuj) {
  7. print mb_strtoupper($drukuj);
  8. print PHP_EOL;
  9. };
  10.  
  11. $tekst = 'DrUkOwAnIe MaŁyMi LiTeRaMi';
  12. maleLitery($tekst);
  13. duzeLitery($tekst);
Salvation
  1. <?php
  2.  
  3. declare(strict_types=1);
  4.  
  5. function bigLetters(string $text): string
  6. {
  7. return mb_strtoupper($text);
  8. }
  9.  
  10. function smallLetters(string $text): string
  11. {
  12. return mb_strtolower($text);
  13. }
  14.  
  15. function printBigLetters(string $text): void
  16. {
  17. echo bigLetters($text) . PHP_EOL;
  18. }
  19.  
  20.  
  21. function printSmallLetters(string $text): void
  22. {
  23. echo smallLetters($text) . PHP_EOL;
  24. }
  25.  
  26. $text1 = 'DrUkOwAnIe DuŻyMi LiTeRaMi';
  27. $text2 = 'DrUkOwAnIe MaŁyMi LiTeRaMi';
  28.  
  29. printBigLetters($text1);
  30. printSmallLetters($text2);


Demo: https://3v4l.org/IWPDp
panksawery
Cytat(Salvation @ 9.06.2022, 09:55:48 ) *
  1. <?php
  2.  
  3. declare(strict_types=1);
  4.  
  5. function bigLetters(string $text): string
  6. {
  7. return mb_strtoupper($text);
  8. }
  9.  
  10. function smallLetters(string $text): string
  11. {
  12. return mb_strtolower($text);
  13. }
  14.  
  15. function printBigLetters(string $text): void
  16. {
  17. echo bigLetters($text) . PHP_EOL;
  18. }
  19.  
  20.  
  21. function printSmallLetters(string $text): void
  22. {
  23. echo smallLetters($text) . PHP_EOL;
  24. }
  25.  
  26. $text1 = 'DrUkOwAnIe DuŻyMi LiTeRaMi';
  27. $text2 = 'DrUkOwAnIe MaŁyMi LiTeRaMi';
  28.  
  29. printBigLetters($text1);
  30. printSmallLetters($text2);


Demo: https://3v4l.org/IWPDp


Bardzo fajne rozwiazanie. Myslalem ze da sie to ogarnac tylko w 2 funkcjach. Dzieki wielkie.

Cytat(viking @ 9.06.2022, 09:53:51 ) *
Wywołaj funkcje po prostu 2x po sobie skoro tekst wejściowy jest ten sam.


Dzieki. Tekst mialbyc dowolny tylko w pierwszej funkcji, druga miala go zamieniac na wielkie litery. Czyli zaleznie co sie wpiszę w pierwszej funkcji druga z automatu zwraca w postaci mb_strtoupper.

Jestem na etapie nauki wiec z góry wybaczcie za "glupie pytania". Po prostu musze zrozumiec jak dzialaja funkcje z wieloma argumentami i jak przenosic wynik z jednej do drugiej i go przekształcać.

pzdr
viking
Jasne, tylko też weź pod uwagę że czasami nie ma sensu opakowanie jak to zrobił Salvation. Powstał z tego w zasadzie niepełny alias funkcji bo definicja np mb_strtoupper to : mb_strtoupper(string $string, ?string $encoding = null): string. Czyli brakuje parametru encoding gdyby chcieć go zmienić.

  1. function maleLitery($drukuj) {
  2. print mb_strtolower($drukuj);
  3. print PHP_EOL;
  4. };
  5.  
  6. function duzeLitery($drukuj) {
  7. print mb_strtoupper($drukuj);
  8. print PHP_EOL;
  9. };
  10.  
  11. function obie($drukuj) {
  12. maleLitery($drukuj);
  13. duzeLitery($drukuj);
  14. };
  15.  
  16. $tekst = 'DrUkOwAnIe MaŁyMi LiTeRaMi';
  17. obie($tekst);
Salvation
Da się to ogarnąć dwoma funkcjami, ale wtedy łamiesz zasady SOLID poniekąd.
nospor
Nie przesadzasz zbytnio z tym SOLID?

Twoj kod na dwoch funkcjach:
echo bigLetters();
echo smallLetters();

I juz.
Poza tym wciskanie osobie, ktora nie ogarnia podstaw funkcji, zasad SOLID to chyba z "lekka" na wyrost jest nei sadzisz? wink.gif
Salvation
Może faktycznie przekombinowane, ale wygląda ładniej biggrin.gif i odpowiada na potrzeby OP-a:

> (...) Po prostu musze zrozumiec jak dzialaja funkcje z wieloma argumentami i jak przenosic wynik z jednej do drugiej i go przekształcać. (...)

Poza tym, tak. Trochę nad wyrost.
panksawery
Cytat(Salvation @ 10.06.2022, 08:45:45 ) *
Da się to ogarnąć dwoma funkcjami, ale wtedy łamiesz zasady SOLID poniekąd.


Do programowania obiektowego mi daleko smile.gif

Cytat(Salvation @ 10.06.2022, 09:45:27 ) *
Może faktycznie przekombinowane, ale wygląda ładniej biggrin.gif i odpowiada na potrzeby OP-a:

> (...) Po prostu musze zrozumiec jak dzialaja funkcje z wieloma argumentami i jak przenosic wynik z jednej do drugiej i go przekształcać. (...)

Poza tym, tak. Trochę nad wyrost.


To nie tyle moje potrzeby co.. takie po prostu natrafiłem ćwiczenie.

Napisz program z dwiema funkcjami. Pierwsza funkcja wydrukuje dowolny tekst małymi literami, a druga - ten sam tekst wielkimi literami. No i nie wiedziałem jak się do tego zabrać biggrin.gif

Cytat(nospor @ 10.06.2022, 09:34:32 ) *
Nie przesadzasz zbytnio z tym SOLID?

Twoj kod na dwoch funkcjach:
echo bigLetters();
echo smallLetters();

I juz.
Poza tym wciskanie osobie, ktora nie ogarnia podstaw funkcji, zasad SOLID to chyba z "lekka" na wyrost jest nei sadzisz? wink.gif


Bez praktyki ciężko ogarniać, a tak jak wspomniałem na początku dopiero co zacząłem się uczyć PHP smile.gif Ty jak byś wykonał dane ćwiczenie? Bliżej rozwiązania salvationa czy vikinga?

Pzdr
nospor
Cytat
Ty jak byś wykonał dane ćwiczenie? Bliżej rozwiązania salvationa czy vikinga?

Gneralnie funkcje nie powinny nic wyswietlac na ekran. Funkcja ma zrobic jakies zadanie i ewentualnei zwrocic jego wynik, a ty potem z tym robisz co chcesz, czy prawidlowo to powinno byc tak jak pokazalem w poprzednim poscie:

echo bigLetters();
echo smallLetters();


Nie mniej jednak tresc zadania miales jasna: napisz funkcje, ktory wyprintuja wynik na ekran wiec defacto to co podal ci viking spelnia 100% tego co mialo byc smile.gif
panksawery
Cytat(nospor @ 10.06.2022, 19:36:37 ) *
Gneralnie funkcje nie powinny nic wyswietlac na ekran. Funkcja ma zrobic jakies zadanie i ewentualnei zwrocic jego wynik, a ty potem z tym robisz co chcesz, czy prawidlowo to powinno byc tak jak pokazalem w poprzednim poscie:

echo bigLetters();
echo smallLetters();


Nie mniej jednak tresc zadania miales jasna: napisz funkcje, ktory wyprintuja wynik na ekran wiec defacto to co podal ci viking spelnia 100% tego co mialo byc smile.gif


Yup. Poczytałem też dużo o funkcjach z manuala etc i dzięki Waszej pomocy też mądrzejszy jestem w tym temacie. Także temat do zamknięcia smile.gif

Dzięki za pomoc.
nospor
edit: no chyba ze doslownie druga funkcja miala printowac wynik pierwsze funkcji to wtedy:

  1. function maleLitery($drukuj) {
  2. print mb_strtolower($drukuj);
  3. return mb_strtolower($drukuj);
  4. };
  5.  
  6. function duzeLitery($drukuj) {
  7. print mb_strtoupper($drukuj);
  8. };
  9.  
  10. duzeLitery(maleLitery('DrUkOwAnIe MaŁyMi LiTeRaMi'));

Wtedy wynik pierwszej funkcji przekazujesz jako argument do drugiej funkcji.
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.