2012-07-18 9 views
7

Kann jemand mir bitte erklären, wie das funktioniert:Warum wird "drucken" von rechts nach links gedruckt?

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

druckt: 76151

Ich weiß, dass die 1 ist der Rückgabewert aus der print Funktion, aber warum sind die Funktionen in umgekehrter Reihenfolge genannt?

+0

Darf ich fragen, wie diese Frage kam gedruckt wird? Ist es eine vereinfachte Version eines anderen Problems, mit dem Sie es zu tun haben? –

+0

Beachten Sie, dass es den Text druckt und dann '1' zurückgibt, so dass Sie' '' '' '' '' '' '' '' '' '' '' nicht drucken können. –

+0

@MikeB Ich habe gerade mit der Druckfunktion herumgespielt. Ich fand auch eine ähnliche Frage in einem php-Zertifizierungsbuch (aber ohne irgendeine Erklärung) – MilMike

Antwort

9

Ich glaube, das passiert, weil der Punktoperator left-associative ist.

Der Ausdruck würde mit Klammern wie folgt aussehen:

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

+1 gute Verbindung. Das ist das dritte Mal, dass ich in dieser Woche * linksassoziative * Antworten gesehen habe. Ich habe sie alle nur überprüft. –

+0

Ich kenne diese Seite, aber ich habe diese links/rechts Sache nie verstanden, jetzt weiß ich es besser, danke :) – MilMike

2

Ihre Funktion von rechts ist die Bewertung nach links.

Die Spur ist ähnlich wie diese:

print (5 . print 6 . print 7) 

Druck 7 wertet zunächst, Druck 7 und 1.

print (5 . print 6 . 1) 

Diese Spuren zurückkehrt 61 zu drucken und den Wert 1 zurück Schließlich:

print (5 . 1) 

Und so haben Sie 76151.

0

Ihr Ausdruck wie folgt geschrieben werden:

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

print 61 und print 7 sind return boolean 1, deshalb 1 auch über

Verwandte Themen