Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]print(1), zagadka
L0k0
post
Post #1





Grupa: Zarejestrowani
Postów: 161
Pomógł: 4
Dołączył: 18.03.2011

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


Witam!

Programuję już trochę ale dziś zobaczyłem coś dość dziwnego. Będąc w zaprzyjaźnionej firmie kolega zadał mi pytanie:

Jaki jest wynik działania funkcji:
  1. echo '1'.(print'2')+3;


W pierwszym momencie pomyślałem o błędzie (string + int ...). Jednak okazało się, że wynikiem jest... 214.

Wróciłem do domu, sprawdziłem i rzeczywiście. Co dziwniejsze, okazało się ,że funkcja print działa 'dziwnie' i nie mogę za bardzo namierzyć w necie dlaczego.

Otóż dla
wynikiem jest... 11, dla
  1. echo print('1');
również! W ogóle dla stringów daje mi 11 a dla int'ów int + 1 (dla 2 jest to 21).

O co z tym chodzi?

Pozdrawiam!

Ten post edytował L0k0 2.04.2014, 14:58:52
Go to the top of the page
+Quote Post
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


W dokumentacji masz wszystko napisane: print - funkcja (czy właściwie konstrukcja) ta wyświetla to co poda się jako jej argument oraz zwraca wartość "1" (int), która to jest później wyświetlana przez Twoje echo.
Go to the top of the page
+Quote Post
trueblue
post
Post #3





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Funkcja print() zwraca 1, więc echo print(1), to echo '11'


--------------------
Go to the top of the page
+Quote Post
L0k0
post
Post #4





Grupa: Zarejestrowani
Postów: 161
Pomógł: 4
Dołączył: 18.03.2011

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


Ja jeszcze raz: czy ktoś wie, jak można coś takiego wykorzystać?

Z informacji, które posiadam jest to jedno z zadań certyfikacji Zend PHP. Nie wiem czy ten certyfikat wymaga znajomości nonsensowych rzeczy czy ten zapis jest rzeczywiście wykorzystywany do czegoś?

Pozdrawiam!
Go to the top of the page
+Quote Post
vonski
post
Post #5





Grupa: Zarejestrowani
Postów: 292
Pomógł: 89
Dołączył: 27.12.2006
Skąd: Warszawa

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


To jest jedno z przykładowych pytań, niekoniecznie trafisz na nie na egzaminie, aczkolwiek jest to możliwe.
Jeśli chodzi o wykorzystanie w praktyce, to raczej sam kod taki jak:

  1. echo '1'.(print'2')+3;


na niewiele się przyda. Natomiast widzieć dlaczego to pokazuje "214" już jak najbardziej warto, bo pytanie sprawdza tak naprawdę kilka rzeczy. Kolejność operatorów, rzutowanie, znajomość konstrukcji print(), co się dzieje kiedy chcemy wyprintować printowany tekst (nie wiem jak to inaczej napisać smile.gif chodzi mi o: echo print 'costam').
Jeśli chodzi o zastosowanie faktu, że print można użyć w wyrażeniu, to np. taki przykład przychodzi mi do głowy:

  1. ($a == $b) ? print 'rowne' : print 'nierowne';


w powyższym print zadziała, echo wywali błąd.


--------------------
Zend Certified Engineer | Microsoft Certified Professional: Programming in HTML5 with JavaScript & CSS3 | Blog
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: 20.08.2025 - 06:40