2012-07-18 39 views
7

bất cứ ai có thể vui lòng giải thích cho tôi cách làm việc này:Tại sao in "in" từ phải sang trái?

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

nó in: 76151

Tôi biết 1 là giá trị trả về từ print chức năng, nhưng tại sao các chức năng gọi theo thứ tự ngược?

+0

Tôi có thể hỏi làm thế nào câu hỏi này đến vậy? Đây có phải là phiên bản đơn giản của một vấn đề khác mà bạn đang xử lý không? –

+0

Lưu ý rằng nó in văn bản, sau đó trả về '1', vì vậy bạn không thể' in() 'một' print() 'khác hoặc bạn sẽ nhận được dấu gạch chéo' 1'. –

+0

@MikeB Tôi vừa chơi với chức năng in. Tôi cũng tìm thấy một câu hỏi tương tự trong một cuốn sách chứng nhận php (nhưng không có bất kỳ lời giải thích nào) – MilMike

Trả lời

9

Tôi tin rằng điều này xảy ra vì toán tử dấu chấm là left-associative.

Khái niệm sẽ trông như thế này với ngoặc:

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

+1 Liên kết tốt. Đó là lần thứ ba tôi thấy câu trả lời * liên kết bên trái * trong tuần này. Tôi chỉ xem xét tất cả. –

+0

Tôi biết trang này, nhưng tôi chưa bao giờ hiểu điều này về bên trái/phải, bây giờ tôi biết rõ hơn, cảm ơn :) – MilMike

2

Chức năng của bạn được đánh giá từ phải sang trái.

Các dấu vết là tương tự như sau:

print (5 . print 6 . print 7) 

in 7 đánh giá đầu tiên, in 7 và trở về 1.

print (5 . print 6 . 1) 

này dấu vết in 61 và trở về 1 Cuối cùng:

print (5 . 1) 

Và do đó bạn có 76151.

0

biểu hiện của bạn có thể được viết như thế này:

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

print 61print 7 là trở boolean 1, đó là lý do tại sao 1 cũng được in

Các vấn đề liên quan