var_dump

(PHP 4, PHP 5)

var_dumpDumps information about a variable

Description

void var_dump ( mixed $expression [, mixed $... ] )

This function displays structured information about one or more expressions that includes its type and value. Arrays and objects are explored recursively with values indented to show structure.

In PHP 5 all public, private and protected properties of objects will be returned in the output.

Tip

As with anything that outputs its result directly to the browser, the output-control functions can be used to capture the output of this function, and save it in a string (for example).

Parameters

expression

The variable you want to dump.

Return Values

No value is returned.

Examples

Example #1 var_dump() example

<?php
$a 
= array(12, array("a""b""c"));
var_dump($a);
?>

The above example will output:

array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  array(3) {
    [0]=>
    string(1) "a"
    [1]=>
    string(1) "b"
    [2]=>
    string(1) "c"
  }
}
<?php

$b 
3.1;
$c true;
var_dump($b$c);

?>

The above example will output:

float(3.1)
bool(true)

See Also

  • print_r() - Prints human-readable information about a variable
  • debug_zval_dump() - Dumps a string representation of an internal zend value to output
  • var_export() - Outputs or returns a parsable string representation of a variable

Коментарии

Автор:
var_dump(get_defined_vars());
will dump all defined variables to the browser.
2005-01-28 08:31:38
http://php5.kiev.ua/manual/ru/function.var-dump.html
If you're like me and uses var_dump whenever you're debugging, you might find these two "wrapper" functions helpful.

This one automatically adds the PRE tags around the var_dump output so you get nice formatted arrays.

<?php

function var_dump_pre($mixed null) {
  echo 
'<pre>';
 
var_dump($mixed);
  echo 
'</pre>';
  return 
null;
}

?>

This one returns the value of var_dump instead of outputting it.

<?php

function var_dump_ret($mixed null) {
 
ob_start();
 
var_dump($mixed);
 
$content ob_get_contents();
 
ob_end_clean();
  return 
$content;
}

?>

Fairly simple functions, but they're infinitely helpful (I use var_dump_pre() almost exclusively now).
2005-03-20 16:06:13
http://php5.kiev.ua/manual/ru/function.var-dump.html
dumping objects that reference each other could lead to infinite recursion
<?php 
$brother 
= new Sibling();
$sister = new Sibling();
$brother->sister $sister;
$sister->brother $brother;

var_dump($brother); 
/* dumps all of $brother's properties, including "sister", which dumps all of $sister's properties, including "brother", etc. */
?>
2006-10-02 15:25:29
http://php5.kiev.ua/manual/ru/function.var-dump.html
Howdy!

I am working on a pretty large project where I needed to dump a human readable form of whatever into the log files... and I thought var_export was too difficult to read. BigueNique at yahoo dot ca has a nice solution, although I needed to NOT modify whatever was being passed to dump.

So borrowing heavily from BigueNique's (just reworked his function) and someone's idea over in the object cloning page, I came up with the following function.

It makes a complete copy of whatever object you initially pass it, including all recursive definitions and outside objects references, then does the same thing as BigueNique's function. I also heavily reworked what it output, to suit my needs.

<?php

function var_log(&$varInput$var_name=''$reference=''$method '='$sub false) {

    static 
$output ;
    static 
$depth ;

    if ( 
$sub == false ) {
       
$output '' ;
       
$depth ;
       
$reference $var_name ;
       
$var serialize$varInput ) ;
       
$var unserialize$var ) ;
    } else {
        ++
$depth ;
       
$var =& $varInput ;
       
    }
       
   
// constants
   
$nl "\n" ;
   
$block 'a_big_recursion_protection_block';
   
   
$c $depth ;
   
$indent '' ;
    while( 
$c -- > ) {
       
$indent .= '|  ' ;
    }

   
// if this has been parsed before
   
if ( is_array($var) && isset($var[$block])) {
   
       
$real =& $var$block ] ;
       
$name =& $var'name' ] ;
       
$type gettype$real ) ;
       
$output .= $indent.$var_name.' '.$method.'& '.($type=='array'?'Array':get_class($real)).' '.$name.$nl;
   
   
// havent parsed this before
   
} else {

       
// insert recursion blocker
       
$var = Array( $block => $var'name' => $reference );
       
$theVar =& $var$block ] ;

       
// print it out
       
$type gettype$theVar ) ;
        switch( 
$type ) {
       
            case 
'array' :
               
$output .= $indent $var_name ' '.$method.' Array ('.$nl;
               
$keys=array_keys($theVar);
                foreach(
$keys as $name) {
                   
$value=&$theVar[$name];
                   
var_log($value$name$reference.'["'.$name.'"]''='true);
                }
               
$output .= $indent.')'.$nl;
                break ;
           
            case 
'object' :
               
$output .= $indent.$var_name.' = '.get_class($theVar).' {'.$nl;
                foreach(
$theVar as $name=>$value) {
                   
var_log($value$name$reference.'->'.$name'->'true);
                }
               
$output .= $indent.'}'.$nl;
                break ;
           
            case 
'string' :
               
$output .= $indent $var_name ' '.$method.' "'.$theVar.'"'.$nl;
                break ;
               
            default :
               
$output .= $indent $var_name ' '.$method.' ('.$type.') '.$theVar.$nl;
                break ;
               
        }
       
       
// $var=$var[$block];
       
   
}
   
    -- 
$depth ;
   
    if( 
$sub == false )
        return 
$output ;
       
}

// var_log( $var, '$name' ) ;

?>

Hope it works well for you!
2007-06-28 16:08:49
http://php5.kiev.ua/manual/ru/function.var-dump.html
As Bryan said, it is possible to capture var_dump() output to a string. But it's not quite exact if the dumped variable contains HTML code.

You can use this instead:

<?php
echo '<pre>'// This is for correct handling of newlines
ob_start();
var_dump($var);
$a=ob_get_contents();
ob_end_clean();
echo 
htmlspecialchars($a,ENT_QUOTES); // Escape every HTML special chars (especially > and < )
echo '</pre>';
?>
2007-08-21 04:49:01
http://php5.kiev.ua/manual/ru/function.var-dump.html
You can also use the PEAR package available at http://pear.php.net/package/Var_Dump

which parses the variable content in a very pleasant manner, a lot more easier to "follow" than the built-in var_dump() function. 

Of course there are many others, but I prefer this one, because it's simply to use.

Just add at the begining of your file:

<?php

require('Var_Dump.php'); // make sure the pear package path is set in php.ini
Var_Dump::displayInit(array('display_mode' => 'HTML4_Text'), array('mode' => 'normal','offset' => 4));
?>

then, instead of simply using var_dump($foo), use:

<?php

Var_Dump
::display($foo);

?>

Read the documentation if you're looking for different output layouts.

Cheers!
Vladimir Ghetau
2007-09-10 03:45:48
http://php5.kiev.ua/manual/ru/function.var-dump.html
made 2 nifty functions based of what some people contributed here. Hope you find them usefull

usage ... call for the dump function. EG: dump($array, "Array dump");

<?php
////////////////////////////////////////////////////////
// Function:         dump
// Inspired from:     PHP.net Contributions
// Description: Helps with php debugging

function dump(&$var$info FALSE)
{
   
$scope false;
   
$prefix 'unique';
   
$suffix 'value';
 
    if(
$scope$vals $scope;
    else 
$vals $GLOBALS;

   
$old $var;
   
$var $new $prefix.rand().$suffix$vname FALSE;
    foreach(
$vals as $key => $val) if($val === $new$vname $key;
   
$var $old;

    echo 
"<pre style='margin: 0px 0px 10px 0px; display: block; background: white; color: black; font-family: Verdana; border: 1px solid #cccccc; padding: 5px; font-size: 10px; line-height: 13px;'>";
    if(
$info != FALSE) echo "<b style='color: red;'>$info:</b><br>";
   
do_dump($var'$'.$vname);
    echo 
"</pre>";
}

////////////////////////////////////////////////////////
// Function:         do_dump
// Inspired from:     PHP.net Contributions
// Description: Better GI than print_r or var_dump

function do_dump(&$var$var_name NULL$indent NULL$reference NULL)
{
   
$do_dump_indent "<span style='color:#eeeeee;'>|</span> &nbsp;&nbsp; ";
   
$reference $reference.$var_name;
   
$keyvar 'the_do_dump_recursion_protection_scheme'$keyname 'referenced_object_name';

    if (
is_array($var) && isset($var[$keyvar]))
    {
       
$real_var = &$var[$keyvar];
       
$real_name = &$var[$keyname];
       
$type ucfirst(gettype($real_var));
        echo 
"$indent$var_name <span style='color:#a2a2a2'>$type</span> = <span style='color:#e87800;'>&amp;$real_name</span><br>";
    }
    else
    {
       
$var = array($keyvar => $var$keyname => $reference);
       
$avar = &$var[$keyvar];
   
       
$type ucfirst(gettype($avar));
        if(
$type == "String"$type_color "<span style='color:green'>";
        elseif(
$type == "Integer"$type_color "<span style='color:red'>";
        elseif(
$type == "Double"){ $type_color "<span style='color:#0099c5'>"$type "Float"; }
        elseif(
$type == "Boolean"$type_color "<span style='color:#92008d'>";
        elseif(
$type == "NULL"$type_color "<span style='color:black'>";
   
        if(
is_array($avar))
        {
           
$count count($avar);
            echo 
"$indent. ($var_name "$var_name => ":"") . "<span style='color:#a2a2a2'>$type ($count)</span><br>$indent(<br>";
           
$keys array_keys($avar);
            foreach(
$keys as $name)
            {
               
$value = &$avar[$name];
               
do_dump($value"['$name']"$indent.$do_dump_indent$reference);
            }
            echo 
"$indent)<br>";
        }
        elseif(
is_object($avar))
        {
            echo 
"$indent$var_name <span style='color:#a2a2a2'>$type</span><br>$indent(<br>";
            foreach(
$avar as $name=>$valuedo_dump($value"$name"$indent.$do_dump_indent$reference);
            echo 
"$indent)<br>";
        }
        elseif(
is_int($avar)) echo "$indent$var_name = <span style='color:#a2a2a2'>$type(".strlen($avar).")</span> $type_color$avar</span><br>";
        elseif(
is_string($avar)) echo "$indent$var_name = <span style='color:#a2a2a2'>$type(".strlen($avar).")</span> $type_color\"$avar\"</span><br>";
        elseif(
is_float($avar)) echo "$indent$var_name = <span style='color:#a2a2a2'>$type(".strlen($avar).")</span> $type_color$avar</span><br>";
        elseif(
is_bool($avar)) echo "$indent$var_name = <span style='color:#a2a2a2'>$type(".strlen($avar).")</span> $type_color".($avar == "TRUE":"FALSE")."</span><br>";
        elseif(
is_null($avar)) echo "$indent$var_name = <span style='color:#a2a2a2'>$type(".strlen($avar).")</span> {$type_color}NULL</span><br>";
        else echo 
"$indent$var_name = <span style='color:#a2a2a2'>$type(".strlen($avar).")</span> $avar<br>";

       
$var $var[$keyvar];
    }
}
?>
2008-01-08 07:33:08
http://php5.kiev.ua/manual/ru/function.var-dump.html
Keep in mind if you have xdebug installed it will limit the var_dump() output of array elements and object properties to 3 levels deep.

To change the default, edit your xdebug.ini file and add the folllowing line:
xdebug.var_display_max_depth=n

More information here:
http://www.xdebug.org/docs/display
2008-04-09 20:56:27
http://php5.kiev.ua/manual/ru/function.var-dump.html
Note that var_dump reset()'s array internal pointer!
2009-02-02 06:08:29
http://php5.kiev.ua/manual/ru/function.var-dump.html
If you want to save exactly the content of an array into a variable to save ir later for example, use this:

<?php $xml var_export($xmltrue); ?>

You'll have in your same variable the content readable, instead of written down or anything else
2010-02-07 13:36:35
http://php5.kiev.ua/manual/ru/function.var-dump.html
a html-encoded var_dump

<?php
function htmlvardump(){ob_start(); $var func_get_args(); call_user_func_array('var_dump'$var); echo htmentities(ob_get_clean());}
?>

(creds: ekneuss / mOo @ irc.freenode.net/#php )
2011-04-23 09:53:00
http://php5.kiev.ua/manual/ru/function.var-dump.html
I wrote this dandy little function for using var_dump() on HTML documents so I don't have to view the source.

<?php
function htmldump($variable$height="9em") {
echo 
"<pre style=\"border: 1px solid #000; height: {$height}; overflow: auto; margin: 0.5em;\">";
var_dump($variable);
echo 
"</pre>\n";
}
?>

You can pass arguments like this:
<?php
$sql 
mysql_query("SELECT id, name, value FROM table WHERE cond = 'value'");
$s mysql_fetch_assoc($sql);

// Dump variable containing the result of the MySQL query
var_dump($s);
?>

The second parameter lets you specify the height of the box. Default is 9em, but if you're expecting a huge output you'll probably want a higher value.

<?php
var_dump
($s"17em");
?>

Happy var_dumping.
2011-06-23 16:28:49
http://php5.kiev.ua/manual/ru/function.var-dump.html
<?php
/**
 * Better GI than print_r or var_dump -- but, unlike var_dump, you can only dump one variable. 
 * Added htmlentities on the var content before echo, so you see what is really there, and not the mark-up.
 * 
 * Also, now the output is encased within a div block that sets the background color, font style, and left-justifies it
 * so it is not at the mercy of ambient styles.
 *
 * Inspired from:     PHP.net Contributions
 * Stolen from:       [highstrike at gmail dot com]
 * Modified by:       stlawson *AT* JoyfulEarthTech *DOT* com 
 *
 * @param mixed $var  -- variable to dump
 * @param string $var_name  -- name of variable (optional) -- displayed in printout making it easier to sort out what variable is what in a complex output
 * @param string $indent -- used by internal recursive call (no known external value)
 * @param unknown_type $reference -- used by internal recursive call (no known external value)
 */
function do_dump(&$var$var_name NULL$indent NULL$reference NULL)
{
   
$do_dump_indent "<span style='color:#666666;'>|</span> &nbsp;&nbsp; ";
   
$reference $reference.$var_name;
   
$keyvar 'the_do_dump_recursion_protection_scheme'$keyname 'referenced_object_name';
   
   
// So this is always visible and always left justified and readable
   
echo "<div style='text-align:left; background-color:white; font: 100% monospace; color:black;'>";

    if (
is_array($var) && isset($var[$keyvar]))
    {
       
$real_var = &$var[$keyvar];
       
$real_name = &$var[$keyname];
       
$type ucfirst(gettype($real_var));
        echo 
"$indent$var_name <span style='color:#666666'>$type</span> = <span style='color:#e87800;'>&amp;$real_name</span><br>";
    }
    else
    {
       
$var = array($keyvar => $var$keyname => $reference);
       
$avar = &$var[$keyvar];

       
$type ucfirst(gettype($avar));
        if(
$type == "String"$type_color "<span style='color:green'>";
        elseif(
$type == "Integer"$type_color "<span style='color:red'>";
        elseif(
$type == "Double"){ $type_color "<span style='color:#0099c5'>"$type "Float"; }
        elseif(
$type == "Boolean"$type_color "<span style='color:#92008d'>";
        elseif(
$type == "NULL"$type_color "<span style='color:black'>";

        if(
is_array($avar))
        {
           
$count count($avar);
            echo 
"$indent. ($var_name "$var_name => ":"") . "<span style='color:#666666'>$type ($count)</span><br>$indent(<br>";
           
$keys array_keys($avar);
            foreach(
$keys as $name)
            {
               
$value = &$avar[$name];
               
do_dump($value"['$name']"$indent.$do_dump_indent$reference);
            }
            echo 
"$indent)<br>";
        }
        elseif(
is_object($avar))
        {
            echo 
"$indent$var_name <span style='color:#666666'>$type</span><br>$indent(<br>";
            foreach(
$avar as $name=>$valuedo_dump($value"$name"$indent.$do_dump_indent$reference);
            echo 
"$indent)<br>";
        }
        elseif(
is_int($avar)) echo "$indent$var_name = <span style='color:#666666'>$type(".strlen($avar).")</span> $type_color".htmlentities($avar)."</span><br>";
        elseif(
is_string($avar)) echo "$indent$var_name = <span style='color:#666666'>$type(".strlen($avar).")</span> $type_color\"".htmlentities($avar)."\"</span><br>";
        elseif(
is_float($avar)) echo "$indent$var_name = <span style='color:#666666'>$type(".strlen($avar).")</span> $type_color".htmlentities($avar)."</span><br>";
        elseif(
is_bool($avar)) echo "$indent$var_name = <span style='color:#666666'>$type(".strlen($avar).")</span> $type_color".($avar == "TRUE":"FALSE")."</span><br>";
        elseif(
is_null($avar)) echo "$indent$var_name = <span style='color:#666666'>$type(".strlen($avar).")</span> {$type_color}NULL</span><br>";
        else echo 
"$indent$var_name = <span style='color:#666666'>$type(".strlen($avar).")</span> ".htmlentities($avar)."<br>";

       
$var $var[$keyvar];
    }
   
    echo 
"</div>";
}
?>
2011-08-10 12:31:37
http://php5.kiev.ua/manual/ru/function.var-dump.html
I post a new var_dump function with colors and collapse features. It can also adapt to terminal output if you execute it from there. No need to wrap it in a pre tag to get it to work in browsers. 

<?php
function dump_debug($input$collapse=false) {
   
$recursive = function($data$level=0) use (&$recursive$collapse) {
        global 
$argv;

       
$isTerminal = isset($argv);

        if (!
$isTerminal && $level == && !defined("DUMP_DEBUG_SCRIPT")) {
           
define("DUMP_DEBUG_SCRIPT"true);

            echo 
'<script language="Javascript">function toggleDisplay(id) {';
            echo 
'var state = document.getElementById("container"+id).style.display;';
            echo 
'document.getElementById("container"+id).style.display = state == "inline" ? "none" : "inline";';
            echo 
'document.getElementById("plus"+id).style.display = state == "inline" ? "inline" : "none";';
            echo 
'}</script>'."\n";
        }

       
$type = !is_string($data) && is_callable($data) ? "Callable" ucfirst(gettype($data));
       
$type_data null;
       
$type_color null;
       
$type_length null;

        switch (
$type) {
            case 
"String"
               
$type_color "green";
               
$type_length strlen($data);
               
$type_data "\"" htmlentities($data) . "\""; break;

            case 
"Double"
            case 
"Float"
               
$type "Float";
               
$type_color "#0099c5";
               
$type_length strlen($data);
               
$type_data htmlentities($data); break;

            case 
"Integer"
               
$type_color "red";
               
$type_length strlen($data);
               
$type_data htmlentities($data); break;

            case 
"Boolean"
               
$type_color "#92008d";
               
$type_length strlen($data);
               
$type_data $data "TRUE" "FALSE"; break;

            case 
"NULL"
               
$type_length 0; break;

            case 
"Array"
               
$type_length count($data);
        }

        if (
in_array($type, array("Object""Array"))) {
           
$notEmpty false;

            foreach(
$data as $key => $value) {
                if (!
$notEmpty) {
                   
$notEmpty true;

                    if (
$isTerminal) {
                        echo 
$type . ($type_length !== null "(" $type_length ")" "")."\n";

                    } else {
                       
$id substr(md5(rand().":".$key.":".$level), 08);

                        echo 
"<a href=\"javascript:toggleDisplay('"$id ."');\" style=\"text-decoration:none\">";
                        echo 
"<span style='color:#666666'>" $type . ($type_length !== null "(" $type_length ")" "") . "</span>";
                        echo 
"</a>";
                        echo 
"<span id=\"plus"$id ."\" style=\"display: " . ($collapse "inline" "none") . ";\">&nbsp;&#10549;</span>";
                        echo 
"<div id=\"container"$id ."\" style=\"display: " . ($collapse "" "inline") . ";\">";
                        echo 
"<br />";
                    }

                    for (
$i=0$i <= $level$i++) {
                        echo 
$isTerminal "|    " "<span style='color:black'>|</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
                    }

                    echo 
$isTerminal "\n" "<br />";
                }

                for (
$i=0$i <= $level$i++) {
                    echo 
$isTerminal "|    " "<span style='color:black'>|</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
                }

                echo 
$isTerminal "[" $key "] => " "<span style='color:black'>[" $key "]&nbsp;=>&nbsp;</span>";

               
call_user_func($recursive$value$level+1);
            }

            if (
$notEmpty) {
                for (
$i=0$i <= $level$i++) {
                    echo 
$isTerminal "|    " "<span style='color:black'>|</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
                }

                if (!
$isTerminal) {
                    echo 
"</div>";
                }

            } else {
                echo 
$isTerminal 
                       
$type . ($type_length !== null "(" $type_length ")" "") . "  " 
                       
"<span style='color:#666666'>" $type . ($type_length !== null "(" $type_length ")" "") . "</span>&nbsp;&nbsp;";
            }

        } else {
            echo 
$isTerminal 
                   
$type . ($type_length !== null "(" $type_length ")" "") . "  " 
                   
"<span style='color:#666666'>" $type . ($type_length !== null "(" $type_length ")" "") . "</span>&nbsp;&nbsp;";

            if (
$type_data != null) {
                echo 
$isTerminal $type_data "<span style='color:" $type_color "'>" $type_data "</span>";
            }
        }

        echo 
$isTerminal "\n" "<br />";
    };

   
call_user_func($recursive$input);
}
?>
2014-11-01 01:45:12
http://php5.kiev.ua/manual/ru/function.var-dump.html
Автор:
Be careful this outputs to stdout stream (1) instead of the proper stderr stream (2).
2016-07-18 21:27:40
http://php5.kiev.ua/manual/ru/function.var-dump.html
It's important to note that the output depends on the precision directive.
<?php
var_dump
(10000000000000.5); // float(10000000000000)
ini_set('precision',-1);
var_dump(10000000000000.5); // float(10000000000000.5)
?>
2019-05-27 17:59:29
http://php5.kiev.ua/manual/ru/function.var-dump.html

    Поддержать сайт на родительском проекте КГБ