2012-07-18 11 views
7

Czy ktoś może mi wyjaśnić, jak to działa:Dlaczego "drukuj" drukuje od prawej do lewej?

<?php 
    print 5 . print 6 . print 7; 
?> 

drukuje: 76151

Wiem 1 jest wartość zwracana z funkcji print, ale dlaczego są funkcje nazywane w odwrotnej kolejności?

+0

Czy mogę zapytać, jak kwestia ta powstała? Czy jest to uproszczona wersja innego problemu, z którym masz do czynienia? –

+0

Zauważ, że wypisuje tekst, a następnie zwraca '1', więc nie możesz' print() 'innego' print() 'lub dostaniesz końcowe śmieci' 1'. –

+0

@MikeB Po prostu bawiłem się funkcją drukowania. Też znalazłem podobne pytanie w księdze certyfikacyjnej php (ale bez żadnego wyjaśnienia). – MilMike

Odpowiedz

9

Uważam, że dzieje się tak, ponieważ operator kropki to left-associative.

Wyrażenie będzie wyglądać tak z nawiasu:

print 5 . (print 6 . (print 7)); 
+2

+1 Dobry link. Po raz trzeci widziałem * lewostronne * odpowiedzi w tym tygodniu. Właśnie przejrzałem je wszystkie. –

+0

Znam tę stronę, ale nigdy nie zrozumiałem tej lewej/prawej rzeczy, teraz wiem lepiej, dzięki :) – MilMike

2

Twoja funkcja oceny od prawej do lewej.

Ślad jest podobny do tego:

print (5 . print 6 . print 7) 

druku 7 ocenia pierwszy drukowania 7 i powrotu 1.

print (5 . print 6 . 1) 

ten śledzi do drukowania 61 i wreszcie powraca 1:

print (5 . 1) 

I w ten sposób masz 76151.

0

wyrażenia mogą być napisane tak:

print (5 . print (6 . print 7)); 

print 61 i print 7 to powrót logiczna 1, to dlaczego 1 jest również drukowane

Powiązane problemy