Home » Php » php – How do I properly use print_r or var_dump?

php – How do I properly use print_r or var_dump?

Posted by: admin July 12, 2020 Leave a comment


I use the following snippet quite often when I am debugging:

echo "<pre>" . var_dump($var) . "</pre>";

And I find I usually get a nice readable output. But sometimes I just don’t. I’m particularly vexed at the moment by this example:



$stop =gmdate("Y-m-d\TH:i:s\Z",time()+3600*24);

$client = new SoapClient($data_url, array('exceptions' => 0,
                                          'user_agent' => "php/".$_SERVER[SCRIPT_NAME],
                                          'login'      => strtolower($username),
                                          'password'   => $password));
$data = $client->download($start,$stop);



I don’t want to reveal my credentials of course, but I am told print_r in this case will do the same as my usual snippet when in fact neither print_r nor my snippet produce anything other than runon data with no formatting at all. How can I make it pretty?!

How to&Answers:

var_dump always show you array in formatted data but too much extra stuff


but if you want formatted data here you need to use <pre> tags

echo '<pre>';
echo '</pre>';


var_dump() echos output directly, so if you want to capture it to a variable to provide your own formatting must use output buffers:

   $s = ob_get_clean();

Once this is done the variable $s now contains the output of var_dump(), so can safely:

   echo "<pre>" . $s . "</pre>";


var_dump is used when you want the more detail about any variable .

    $temp = "hello" ;
    echo var_dump($temp);

it output as follows string(5) “hello” means it print the data type of variable and length of string and what is the content in the variable.

while print_r($expression) is used for printing the data like array or any other object data type which can not directly printed by echo statement.


Well, print_r() is used to print and array, but in order to display the array in a pretty way you also need html tags.

Just do the following:

echo "<pre>";
echo "</pre>";