2015-06-08 46 views
7

Jeśli używam print w tym kodzie:Dlaczego print i echo zachowują się inaczej w "do" pętli

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

widzę jako wyjście to:

2

3

4

Ale gdy używam echo z kod nie działa:

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

widzę ten błąd:

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

Moje pytanie brzmi:

  • Dlaczego mogę używać print jako trzeci ekspresji w for pętli, ale nie można przy użyciu echo i dlaczego zachowują się odmiennie od siebie?

Referencje:

+0

dlaczego chcesz echo lub wydrukować tam, jeśli możesz w pętli? – SuperDJ

+10

Prawdopodobnie dlatego, że 'print' zwraca wartość; podczas gdy 'echo' nie zwraca żadnej wartości .... a wyrażenie wymaga wartości –

+0

@ Druk znacznika jest również konstrukcją językową. –

Odpowiedz

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"; 

Pewna część mojej odpowiedzi są częścią poniżej odpowiedź. Myślę, że to jest odpowiedź na twoje pytanie. Najważniejszą częścią jest print() zachowuje się jak funkcja

zobaczyć tę odpowiedź: https://stackoverflow.com/a/234255/1848929

Co o echo:

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

patrz uwagi udział na tej stronie: http://us2.php.net/manual/en/function.echo.php