5.8. Dumping Variable Contents as Strings

Problem

You want to inspect the values stored in a variable. It may be a complicated nested array or object, so you can’t just print it out or loop through it.

Solution

Use print_r( ) or var_dump( ):

$array = array("name" => "frank", 12, array(3, 4));

print_r($array);
Array
               (
                   [name] => frank
                   [0] => 12
                   [1] => Array
                       (
                           [0] => 3
                           [1] => 4
                       )
               )
var_dump($array);
array(3) {
                 ["name"]=>
                 string(5) "frank"
                 [0]=>
                 int(12)
                 [1]=>
                 array(2) {
                   [0]=>
                   int(3)
                   [1]=>
                   int(4)
                 }
               }

Discussion

The output of print_r( ) is more concise and easier to read. The output of var_dump( ), however, gives data types and lengths for each variable.

Since these functions recursively work their way through variables, if you have references within a variable pointing back to the variable itself, you can end up with an infinite loop. Both functions stop themselves from printing variable information forever, though. Once print_r( ) has seen a variable once, it prints *RECURSION* instead of printing information about the variable again and continues iterating through the rest of the information it has to print. When var_dump( ) sees a variable more than three times, it throws a fatal error and ends script execution. Consider the arrays $user_1 and $user_2, which reference each other through their friend elements:

$user_1 = array('name' => 'Max Bialystock', 'username' => 'max'); $user_2 = array('name' => 'Leo Bloom', 'username' => 'leo'); // Max and Leo are friends $user_2['friend'] ...

Get PHP Cookbook now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.