2012-07-18 36 views
7

Qualcuno può spiegare a me come funziona:Perché "stampa" stampa da destra a sinistra?

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

esso stampa: 76151

So che il 1 è il valore di ritorno dalla funzione print, ma perché sono le funzioni chiamati in ordine inverso?

+0

Posso chiedere come questa domanda è nata? È una versione semplificata di un altro problema con cui hai a che fare? –

+0

Nota che stampa il testo, quindi restituisce '1', quindi non puoi' print() 'another' print() 'o ti verrà rimessa la junk' 1'. –

+0

@ MikeB Ho appena giocato con la funzione di stampa. Ho anche trovato una domanda simile in un libro di certificazione php (ma senza alcuna spiegazione) – MilMike

risposta

9

Credo che ciò si verifichi perché l'operatore punto è left-associative.

L'espressione sarebbe simile a questa con parentesi:

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

+1 Good link. Questa è la terza volta che ho visto * risposte associative a sinistra questa settimana. Li ho appena recensiti tutti. –

+0

Conosco questa pagina, ma non ho mai capito questa cosa sinistra/destra, ora lo so meglio, grazie :) – MilMike

2

La funzione sta valutando da destra a sinistra.

La traccia è simile a questo:

print (5 . print 6 . print 7) 

stampa 7 valuta prima, la stampa 7 e ritorno 1.

print (5 . print 6 . 1) 

Questo tracce di stampare 61 e ritorno 1 Infine:

print (5 . 1) 

E quindi avete 76151.

0

tua espressione può essere scritta così:

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

print 61 e print 7 sono ritorno booleano 1, ecco perché 1 è stampato anche