2015-06-08 36 views
7

Se io uso print in questo codice:Perché la stampa e l'eco si comportano in modo diverso in un ciclo "for"

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

vedo come output questo:

2

3

4

ma quando uso echo il codice non funziona:

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

vedo questo errore:

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

La mia domanda è:

  • Perché posso usare print come terza espressione in un ciclo for, ma non riesco a quando si utilizza echo e perché si comportano in modo diverso l'una dall'altra?

Riferimenti:

+0

perché dovresti eco o stampare lì se puoi nel ciclo? – SuperDJ

+10

Probabilmente perché 'print' restituisce un valore; mentre 'echo' non restituisce alcun valore .... e un'espressione richiede un valore –

+0

@MarkBaker print è anche un costrutto di linguaggio. –

risposta

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

Una parte della mia risposta sono parte di sotto risposta. Penso che questa sia la risposta alla tua domanda. parte più importante è print() si comporta come una funzione

vedere questa risposta: https://stackoverflow.com/a/234255/1848929

Che dire echo:

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

vedere le note parte in questa pagina: http://us2.php.net/manual/en/function.echo.php