242

Possible Duplicate:
Reference: Comparing PHP's print and echo

Is there any major and fundamental difference between these two functions in PHP?

0

5 Answers 5

306

From: http://web.archive.org/web/20090221144611/http://faqts.com/knowledge_base/view.phtml/aid/1/fid/40

  1. 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.

  2. 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.

  1. Parameter(s). The grammar is: 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"; 
Sign up to request clarification or add additional context in comments.

7 Comments

Echo can also be used in a ternary operation: echo ($b) ? 'true' : 'false';
@philjohn I'm pretty sure your statement is equavalent to: echo (($b) ? 'true' : 'false'); and not: (echo ($b)) ? 'true' : 'false'; So echo is not part of the actual condition in the ternary operation.
In the interests of making something not doable with echo: $b ? print "true" : die("false");
From w3C: The PHP print Statement: print is also a language construct,
you can echo(print('test')) but you cannot print(echo('test'))
|
77

They are:

  • print only takes one parameter, while echo can have multiple parameters.
  • print returns a value (1), so can be used as an expression.
  • echo is slightly faster.

Comments

10

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

3 Comments

Can you make it more clear , Sir ?
Wow, this is a really bad answer from nine years ago, I don't think there's any way we can improve it. Sorry!
@Legend I think @grilix is referring to the ability for print() to return 1. if the 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.
9

To add to the answers above, while print can only take one parameter, it will allow for concatenation of multiple values, ie:

$count = 5; print "This is " . $count . " values in " . $count/5 . " parameter"; 

This is 5 values in 1 parameter

Comments

6

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) 

2 Comments

echo doesn't accept echo('foo','bar');, but does accept echo 'foo', 'bar';
I know this answer is old, but doesn't 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!

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.