Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Funkcje drukujące tekst, różną wielkością liter
panksawery
post
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 8.06.2022

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


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 (IMG:style_emoticons/default/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. ?>
Go to the top of the page
+Quote Post
viking
post
Post #2





Grupa: Zarejestrowani
Postów: 6 381
Pomógł: 1116
Dołączył: 30.08.2006

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


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);


Ten post edytował viking 9.06.2022, 08:54:43
Go to the top of the page
+Quote Post
Salvation
post
Post #3





Grupa: Zarejestrowani
Postów: 405
Pomógł: 73
Dołączył: 15.07.2014

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


  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

Ten post edytował Salvation 9.06.2022, 08:56:56
Go to the top of the page
+Quote Post
panksawery
post
Post #4





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 8.06.2022

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


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
Go to the top of the page
+Quote Post
viking
post
Post #5





Grupa: Zarejestrowani
Postów: 6 381
Pomógł: 1116
Dołączył: 30.08.2006

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


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);


Ten post edytował viking 9.06.2022, 11:53:36
Go to the top of the page
+Quote Post
Salvation
post
Post #6





Grupa: Zarejestrowani
Postów: 405
Pomógł: 73
Dołączył: 15.07.2014

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


Da się to ogarnąć dwoma funkcjami, ale wtedy łamiesz zasady SOLID poniekąd.

Ten post edytował Salvation 10.06.2022, 07:55:36
Go to the top of the page
+Quote Post
nospor
post
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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? (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
Salvation
post
Post #8





Grupa: Zarejestrowani
Postów: 405
Pomógł: 73
Dołączył: 15.07.2014

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


Może faktycznie przekombinowane, ale wygląda ładniej (IMG:style_emoticons/default/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.
Go to the top of the page
+Quote Post
panksawery
post
Post #9





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 8.06.2022

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


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 (IMG:style_emoticons/default/smile.gif)

Cytat(Salvation @ 10.06.2022, 09:45:27 ) *
Może faktycznie przekombinowane, ale wygląda ładniej (IMG:style_emoticons/default/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ć (IMG:style_emoticons/default/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? (IMG:style_emoticons/default/wink.gif)


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

Pzdr
Go to the top of the page
+Quote Post
nospor
post
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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 (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
panksawery
post
Post #11





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 8.06.2022

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


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 (IMG:style_emoticons/default/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 (IMG:style_emoticons/default/smile.gif)

Dzięki za pomoc.

Ten post edytował panksawery 10.06.2022, 18:45:44
Go to the top of the page
+Quote Post
nospor
post
Post #12





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 20.09.2025 - 10:33