2015-06-08 17 views
7

Nếu tôi sử dụng print trong mã này:Tại sao in và echo hành xử khác nhau trong một "cho" vòng

<?php 
for($i = 1; $i <= 3; print $i . "\n") { 
    $i++; 
} 
?> 

tôi thấy như đầu ra này:

2

3

4

Nhưng khi tôi sử dụng echo sự mã không hoạt động:

<?php 
for($i = 1; $i <= 3; echo $i . "\n") { 
    $i++; 
} 
?> 

Tôi thấy lỗi này:

PHP Parse error: syntax error, unexpected 'echo' (T_ECHO), expecting ')' in /media/datos/xampp/htdocs/temp/1.php on line 3

Câu hỏi của tôi là:

  • Tại sao tôi có thể sử dụng print như một biểu thức thứ ba trong một vòng lặp for, nhưng không thể khi sử dụng echo và tại sao họ hành xử khác nhau từ mỗi khác?

Tài liệu tham khảo:

+0

lý do tại sao bạn sẽ echo hoặc in ở đó nếu bạn có thể trong vòng lặp? – SuperDJ

+10

Có lẽ vì 'print' trả về một giá trị; trong khi 'echo' không trả về bất kỳ giá trị nào .... và một biểu thức yêu cầu một giá trị –

+0

@MarkBaker print cũng là một cấu trúc ngôn ngữ. –

Trả lời

6

Expression. print() behaves like a function in that you can do: $ret = print "Hello World"; And $ret will be 1. That means that print can be used as part of a more complex expression where echo cannot. An example from the PHP Manual:

$b ? print "true" : print "false"; 

Một số phần của câu trả lời của tôi là một phần của câu trả lời dưới đây. Tôi nghĩ đây là câu trả lời cho câu hỏi của bạn. Phần quan trọng nhất là print() cư xử như một hàm

thấy câu trả lời này: https://stackoverflow.com/a/234255/1848929

gì về echo:

Note: Because this is a language construct and not a function, it cannot be called using variable functions.

xem ghi chú phần trên trang này: http://us2.php.net/manual/en/function.echo.php

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