Possible Duplicate:
Reference: Comparing PHP's print and echo
Is there any major and fundamental difference between these two functions in PHP?
Possible Duplicate:
Reference: Comparing PHP's print and echo
Is there any major and fundamental difference between these two functions in PHP?
From: http://web.archive.org/web/20090221144611/http://faqts.com/knowledge_base/view.phtml/aid/1/fid/40
Speed. There is a difference between the two, but speed-wise it should be irrelevant which one you use. echo is marginally faster since it doesn't set a return value if you really want to get down to the nitty gritty.
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"; print is also part of the precedence table which it needs to be if it is to be used within a complex expression. It is just about at the bottom of the precedence list though. Only , AND OR XOR are lower.
echo expression [, expression[, expression] ... ] But echo ( expression, expression ) is not valid. This would be valid: echo ("howdy"),("partner"); the same as: echo "howdy","partner"; (Putting the brackets in that simple example serves no purpose since there is no operator precedence issue with a single term like that.)So, echo without parentheses can take multiple parameters, which get concatenated:
echo "and a ", 1, 2, 3; // comma-separated without parentheses echo ("and a 123"); // just one parameter with parentheses print() can only take one parameter:
print ("and a 123"); print "and a 123"; echo: $b ? print "true" : die("false");echo(print('test')) but you cannot print(echo('test'))I think print() is slower than echo.
I like to use print() only for situations like:
echo 'Doing some stuff... '; foo() and print("ok.\n") or print("error: " . getError() . ".\n"); foo() function returns false, then the and part is false... so that allows the second part of the evaluation ( after the or ) to execute. It's an interesting use of print that I hadn't thought of.As the PHP.net manual suggests, take a read of this discussion.
One major difference is that echo can take multiple parameters to output. E.g.:
echo 'foo', 'bar'; // Concatenates the 2 strings print('foo', 'bar'); // Fatal error If you're looking to evaluate the outcome of an output statement (as below) use print. If not, use echo.
$res = print('test'); var_dump($res); //bool(true) print ALWAYS return 1? Besides, when and why would you ever need to test to be sure something printed out? That is just straight up NOT NEEDED, EVER! Quite frankly, print is useless and should be removed, in favor of ECHO!