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.