What's the difference between echo, print, print_r, and var_dump in PHP?
Asked Answered
php
S

11

210

I use echo and print_r much, and almost never use print.

I feel echo is a macro, and print_r is an alias of var_dump.

But that's not the standard way to explain the differences.

Symon answered 30/10, 2009 at 0:17 Comment(3)
print_r isn't exactly an alias of var_dump - it outputs in a different format. Notably, the output from var_dump also includes the "type" of each variable.Mapes
Reference: Comparing PHP's print and echoConsentaneous
Another detail to add and that may be useful, is that var_dump truncates very long texts, showing ... and indicating the remaining length, for example: even '... (length = 4482) If you use echo this does not happen.Software
B
196

print and echo are more or less the same; they are both language constructs that display strings. The differences are subtle: print has a return value of 1 so it can be used in expressions whereas echo has a void return type; echo can take multiple parameters, although such usage is rare; echo is slightly faster than print. (Personally, I always use echo, never print.)

var_dump prints out a detailed dump of a variable, including its type and the type of any sub-items (if it's an array or an object). print_r prints a variable in a more human-readable form: strings are not quoted, type information is omitted, array sizes aren't given, etc.

var_dump is usually more useful than print_r when debugging, in my experience. It's particularly useful when you don't know exactly what values/types you have in your variables. Consider this test program:

$values = array(0, 0.0, false, '');

var_dump($values);
print_r ($values);

With print_r you can't tell the difference between 0 and 0.0, or false and '':

array(4) {
  [0]=>
  int(0)
  [1]=>
  float(0)
  [2]=>
  bool(false)
  [3]=>
  string(0) ""
}

Array
(
    [0] => 0
    [1] => 0
    [2] => 
    [3] => 
)
Butylene answered 30/10, 2009 at 0:20 Comment(6)
What is language constructure?Peptidase
@Shore - it's something built into the language that isn't a function. They are generally very fast, and don't operate exactly like normal functions.Janettjanetta
Edited two years later to correct the inaccuracies identified in these comments. Thanks all, I must've been sleeping on Jun 7 '10. ;-)Butylene
Another difference between var_dump and print_r is that print_r allows you to output to a string by setting a single parameter. I'm sure you can achieve the same with var_dump, but it's not as straightforward.Norris
"echo and print are more or less the same. They are both used to output data to the screen. The differences are small: echo has no return value while print has a return value of 1 so it can be used in expressions. echo can take multiple parameters (although such usage is rare) while print can take one argument. echo is marginally faster than print." - I do believe you've been plagiarized, sir.Faitour
Quick, to the lawyer mobile!Butylene
M
103

echo

  • Outputs one or more strings separated by commas
  • No return value

    e.g. echo "String 1", "String 2"

print

  • Outputs only a single string
  • Returns 1, so it can be used in an expression

    e.g. print "Hello"

    or, if ($expr && print "foo")

print_r()

  • Outputs a human-readable representation of any one value
  • Accepts not just strings but other types including arrays and objects, formatting them to be readable
  • Useful when debugging
  • May return its output as a return value (instead of echoing) if the second optional argument is given

var_dump()

  • Outputs a human-readable representation of one or more values separated by commas
  • Accepts not just strings but other types including arrays and objects, formatting them to be readable
  • Uses a different output format to print_r(), for example it also prints the type of values
  • Useful when debugging
  • No return value

var_export()

  • Outputs a human-readable and PHP-executable representation of any one value
  • Accepts not just strings but other types including arrays and objects, formatting them to be readable
  • Uses a different output format to both print_r() and var_dump() - resulting output is valid PHP code!
  • Useful when debugging
  • May return its output as a return value (instead of echoing) if the second optional argument is given

Notes:

  • Even though print can be used in an expression, I recommend people avoid doing so, because it is bad for code readability (and because it's unlikely to ever be useful). The precedence rules when it interacts with other operators can also be confusing. Because of this, I personally don't ever have a reason to use it over echo.
  • Whereas echo and print are language constructs, print_r() and var_dump()/var_export() are regular functions. You don't need parentheses to enclose the arguments to echo or print (and if you do use them, they'll be treated as they would in an expression).
  • While var_export() returns valid PHP code allowing values to be read back later, relying on this for production code may make it easier to introduce security vulnerabilities due to the need to use eval(). It would be better to use a format like JSON instead to store and read back values. The speed will be comparable.
Mapes answered 7/6, 2010 at 6:22 Comment(2)
Just a quick note about when you'd want the echo $a, $b; syntax when you can just do echo $a . $b;: if either $a or $b are really large strings then the latter will use extra memory and time creating a separate concatenated version of the strings in memory before it can start outputting either to the browser.Mapes
Of course you could just use echo $a; echo $b; too.Mapes
J
16

Just to add to John's answer, echo should be the only one you use to print content to the page.

print is slightly slower. var_dump() and print_r() should only be used to debug.

Also worth mentioning is that print_r() and var_dump() will echo by default, add a second argument to print_r() at least that evaluates to true to get it to return instead, e.g. print_r($array, TRUE).

The difference between echoing and returning are:

  • echo: Will immediately print the value to the output.
  • returning: Will return the function's output as a string. Useful for logging, etc.
Janettjanetta answered 30/10, 2009 at 0:25 Comment(5)
Just because you sort of raised the issue, what's the difference between echoing and returning?Itin
wow I wish I knew about the returning parameter :( basically you can do $foo = print_r($array, true); and use it in other ways (into a log, table, etc)Gelding
I've used the print_r returning param quite a lot while I was coding PHP. However, I tended to write print_r( $foo, 1 );. It's quicker to type ;) And about this on I don't care much about readability as I find the name print_r not very descriptive either.Sorrel
var_dump() doesn't support the second argument allowing it to return a value like print_r() does, because var_dump() can accept multiple arguments to output.Mapes
@Mapes True, not sure why I wrote that.Janettjanetta
C
8

The difference between echo, print, print_r and var_dump is very simple.

echo

echo is actually not a function but a language construct which is used to print output. It is marginally faster than the print.

echo "Hello World";    // this will print Hello World
echo "Hello ","World"; // Multiple arguments - this will print Hello World

$var_1=55;
echo "$var_1";               // this will print 55
echo "var_1=".$var_1;        // this will print var_1=55
echo 45+$var_1;              // this will print 100

$var_2="PHP";
echo "$var_2";                   // this will print PHP

$var_3=array(99,98,97)           // Arrays are not possible with echo (loop or index  value required)
$var_4=array("P"=>"3","J"=>"4"); // Arrays are not possible with echo (loop or index  value required)

You can also use echo statement with or without parenthese

echo ("Hello World");   // this will print Hello World

print

Just like echo construct print is also a language construct and not a real function. The differences between echo and print is that print only accepts a single argument and print always returns 1. Whereas echo has no return value. So print statement can be used in expressions.

print "Hello World";    // this will print Hello World
print "Hello ","World"; // Multiple arguments - NOT POSSIBLE with print
$var_1=55;
print "$var_1";               // this will print 55
print "var_1=".$var_1;        // this will print var_1=55
print 45+$var_1;              // this will print 100

$var_2="PHP";
print "$var_2";                   // this will print PHP

$var_3=array(99,98,97)           // Arrays are not possible with print (loop or index  value required)
$var_4=array("P"=>"3","J"=>"4"); // Arrays are not possible with print (loop or index  value required)

Just like echo, print can be used with or without parentheses.

print ("Hello World");   // this will print Hello World

print_r

The print_r() function is used to print human-readable information about a variable. If the argument is an array, print_r() function prints its keys and elements (same for objects).

print_r ("Hello World");    // this will print Hello World

$var_1=55;
print_r ("$var_1");               // this will print 55
print_r ("var_1=".$var_1);        // this will print var_1=55
print_r (45+$var_1);              // this will print 100

$var_2="PHP";
print_r ("$var_2");                // this will print PHP

$var_3=array(99,98,97)             // this will print Array ( [0] => 1 [1] => 2 [2] => 3 ) 
$var_4=array("P"=>"3","J"=>"4");   // this will print  Array ( [P] => 3 [J] => 4 ) 

var_dump

var_dump function usually used for debugging and prints the information ( type and value) about a variable/array/object.

var_dump($var_1);     // this will print  int(5444) 
var_dump($var_2);     // this will print  string(5) "Hello" 
var_dump($var_3);     // this will print  array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) } 
var_dump($var_4);     // this will print  array(2) { ["P"]=> string(1) "3" ["J"]=> string(1) "4" }
Clansman answered 3/10, 2018 at 13:18 Comment(0)
L
6
echo

Not having return type

print

Have return type

print_r()

Outputs as formatted,

Lobule answered 13/12, 2012 at 5:50 Comment(0)
R
3

Echo :

It is statement not a function No return value

Not Required the parentheses

Not Print Array

Print

It is real function

Return type 1

Required the Parentheses

Not Print Array

Print_r

Print in human readable format

String not in Quotes

Not Detail Information of Variable like type and all

var_dump

All dump information of variable like type of element and sub element

Ramshackle answered 22/8, 2013 at 10:30 Comment(2)
There are so many problems with this answer. print is not a real function, it is a language construct just like echo. It can also be used as a statement. echo is not a statement nor can it be used in one. print does not require parentheses, nor do either echo or print use the parentheses like a function would. You also missed one of the main differences - echo accepts multiple strings to echo separated by commas.Mapes
... and you submitted this answer when several answers already existed and contained the correct information.Mapes
F
2

**Echocan accept multiple expressions while print cannot. The Print_r () PHP function is used to return an array in a human readable form. It is simply written as

![Print_r ($your_array)][1]
Felicefelicia answered 2/12, 2013 at 11:9 Comment(0)
B
2

echo : echo is a language construct where there is not required to use parentheses with it and it can take any number of parameters and return void.

   void echo (param1,param2,param3.....);

   Example: echo "test1","test2,test3";

print : it is a language construct where there is not required to use parentheses it just take one parameter and return

    1 always.

           int print(param1);

           print "test1";
           print "test1","test2"; // It will give syntax error

prinf : It is a function which takes atleast one string and format style and returns length of output string.

    int printf($string,$s);

    $s= "Shailesh";
    $i= printf("Hello %s how are you?",$s);    
    echo $i;

    Output : Hello Shailesh how are you?
             27



   echo returns void so its execution is faster than print and printf
Belden answered 30/1, 2014 at 11:15 Comment(0)
V
2

print_r() is used for printing the array in human readable format.

Voidance answered 21/1, 2015 at 9:27 Comment(0)
O
0

print_r() can print out value but also if second flag parameter is passed and is TRUE - it will return printed result as string and nothing send to standard output. About var_dump. If XDebug debugger is installed so output results will be formatted in much more readable and understandable way.

Octave answered 15/3, 2016 at 16:9 Comment(0)
D
-1

they both are language constructs. echo returns void and print returns 1. echo is considered slightly faster than print.

D answered 24/7, 2014 at 6:9 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.