6

What is the difference between these three?

return , echo and print keyword in PHP

function theBand($abc,$bac) {

return $abc;
echo $abc;

}

Both does the same, it does show or return me the value holding in the variable abc. Now return exists the function and echo continues. Apart from this is there anything specific on return keyword.

Kevin
  • 23,174
  • 26
  • 81
  • 111
  • Both don't do the same work though, you're wrong. – zerkms Apr 25 '10 at 22:30
  • `echo` & `print` prints to screen literally. `Return` just gives you the value to THEN do what you want to it, ie. `echo`. `Return` is better in many cases. – Foxinni Aug 08 '12 at 14:03

3 Answers3

17

return is a language construct used to exit a function and give a value to the caller of the function.

echo and print are both language constructs that output strings. The main difference is that echo can take multiple arguments separated by commas, but print accepts only a single argument.

Mark Byers
  • 811,555
  • 193
  • 1,581
  • 1,452
  • what does this statement of yours mean? give a value to the caller of the function and does echo and print does not exit a function from performing the next statement – Kevin Apr 25 '10 at 22:10
  • @theband: I'm not sure exactly what you need me to clarify. `return` is pretty much the same in PHP as it is in any other language - it returns a value. Have you used `return` before in any language? Is there a specific word in my answer that you don't understand? Do you know about functions and their purpose? Regarding your second question, you are right that `print` and `echo` do not cause the function to exit. Execution continues on the next line. – Mark Byers Apr 25 '10 at 22:21
  • I have updated my question, please do check and thanks for the answer. – Kevin Apr 25 '10 at 22:24
4

return is used when a function has to return a value.

please see HERE

echo and print are very similar however echo is faster as it does not return a value.

  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 and XOR are lower.

  3. 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";
Gumbo
  • 643,351
  • 109
  • 780
  • 844
Strong Like Bull
  • 11,155
  • 36
  • 98
  • 169
0

print returns 1, while echo returns nothing. Echo also can take multiple arguments, as Mark points out.

return (in the context of a function) exits the function (Returning a value, if provided). In the global context, return will stop executing whatever file it's in. So you can bail out of an include file, or halt execution of the main script this way.

timdev
  • 61,857
  • 6
  • 82
  • 92