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 9.06.2022, 08:28:46
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 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 9.06.2022, 08:53:51
Post #2





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
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 9.06.2022, 08:55:48
Post #3





Grupa: Zarejestrowani
Postów: 342
Pomógł: 70
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 9.06.2022, 10:38:24
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 9.06.2022, 11:52:55
Post #5





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
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 10.06.2022, 07:45:45
Post #6





Grupa: Zarejestrowani
Postów: 342
Pomógł: 70
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 10.06.2022, 08:34:32
Post #7





Grupa: Moderatorzy
Postów: 36 446
Pomógł: 6292
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? wink.gif


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Salvation
post 10.06.2022, 08:45:27
Post #8





Grupa: Zarejestrowani
Postów: 342
Pomógł: 70
Dołączył: 15.07.2014

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


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.
Go to the top of the page
+Quote Post
panksawery
post 10.06.2022, 17:48:14
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 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
Go to the top of the page
+Quote Post
nospor
post 10.06.2022, 18:36:37
Post #10





Grupa: Moderatorzy
Postów: 36 446
Pomógł: 6292
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 smile.gif


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
panksawery
post 10.06.2022, 18:45:14
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 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.

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





Grupa: Moderatorzy
Postów: 36 446
Pomógł: 6292
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.


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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 Wersja Lo-Fi Aktualny czas: 19.04.2024 - 03:13