2010-08-04 100 views

回答

296

var_dump功能显示结构化约变量/表达式,包括其类型和信息。数组递归地用值缩进来显示结构。它还显示哪些数组值和对象属性是引用。

print_r()以人类可读的方式显示有关变量的信息。数组值将以显示元素的格式呈现。类似的符号用于对象。

实施例:

$obj = (object) array('qualitypoint', 'technologies', 'India'); 

var_dump($obj)将显示以下输出在屏幕上。

object(stdClass)#1 (3) { 
[0]=> string(12) "qualitypoint" 
[1]=> string(12) "technologies" 
[2]=> string(5) "India" 
} 

而且,print_r($obj)将在屏幕下方显示输出。

stdClass Object ( 
[0] => qualitypoint 
[1] => technologies 
[2] => India 
) 

更多信息

+60

print_r(null)将返回任何值,其中var_dump(null)返回NULL,这在调试时很有用ging – rosh3000 2013-10-02 12:29:00

+4

你能用'var_export'扩展你的答案吗? – joryl 2016-03-23 14:42:43

+0

var_dump()的两个优点是自动转储的信息包含在pre元素中。当使用var_dump()时,你可以看到每种类型都有自己的颜色。增强可读性。 – Julian 2016-09-05 13:04:38

19

var_dump()会告诉你事物的类型以及它的内容。

所以你会得到=> [string]“var”Example在这里。

print_r()只会输出内容。

会输出=>“var”Example在这里。

+9

我认为更好的例子是'的var_dump(0.0);'其输出'浮子(0) 'vs'print_r(0.0);'输出'0'(因此导致可能的类型混淆)... – ircmaxell 2010-08-04 13:57:34

7

var_dump显示关于对象/变量的结构化信息。这包括类型和值。像print_r数组通过递归和缩进。

print_r显示器人类可读关于与格式呈现为数组和对象键和元素的值的信息。

最重要的是要注意的是var_dump将输出类型以及值,而print_r不会。

12

如果你问什么时候应该使用什么,我一般用print_r()显示值和var_dump()何时有变量类型的问题。

48

一般而言,print_r()输出更好,更简洁,更易于阅读,又名人可读,但无法显示数据类型。

随着print_r()你也可以输出存入一个变量:

$output = print_r($array, true); 

var_dump()不能做。然而var_dump()可以显示数据类型。 var_dumpprint_r

转储关于可变信息的功能,但var_dump多个参数之间

+9

var_dump()可以存储在一个变量中,虽然它有点丑:http://stackoverflow.com/questions/139474/how-can-i-capture-the-result-of- var-dump-to-a-string – SgtPooki 2013-02-12 15:15:22

+7

如果你需要保存,你也可以'兄弟'[var_export()](http://www.php.net/manual/en/function.var-export.php) – 2013-04-06 10:32:53

4

的显着差异,这将被转储,其中作为print_r可以取两个参数哪些第一参数是可变你想要转储,第二个是布尔值。

var_dump无法返回任何值,它只能转储/打印,其中,仿佛我们设置的print_r秒参数真正的print_r可以返回变量信息的值。返回的值print_r将在字符串格式。

print_r打印的信息更多的是可读格式,其中var_dump打印原始值。

print_r函数可以在很多情况下使用,其中var_dump可以用于调试目的,主要是因为它不能返回值。

+1

['vardump'](http://php.net/manual/en/function.var-dump.php)需要一个**或更多**参数,并且每个参数都将被倾倒。 – bishop 2015-09-29 17:29:35

+0

@bishop,是的,你是正确的,它可以采取更多的参数,但它不会返回任何值 – 2015-10-01 07:22:19

+0

所以修复你的答案? – 2016-09-21 20:44:34

2

var_dump($var)示出了深入的细节,通过在值的可变

  • 长度提供所述值的

    • 数据类型的附加细节(包括后代元素)
    • 数量的元件
  • 4

    我会建议把var_dump()或printr的输出放入pre标签,当o输出到浏览器。

    print "<pre>"; 
    print_r($dataset); 
    print "</pre>"; 
    

    会给出更可读的结果。

    1

    对于大型数组,print_r可以显示比有用的信息更多的信息。您可以像这样截断它,显示前2000个字符或您需要的多个字符。

    echo "<pre>" . substr(print_r($dataset, 1), 0, 2000) . "</pre>"; 
    
    0

    print_r()和var_dump()是在PHP中用于调试目的的数组调试函数。 array_length(array_length){[0] = string)返回数组键和其成员为Array([key] = value),而var_dump()函数返回数组列表,其数组键与数据类型和长度一样, (1) 'A'}。

    1

    的var_dump(): -

    1. 该功能显示结构有关,其包括它的类型和值的一个或多个表达式的信息。数组和对象以递归的方式递归探索,其中值显示为结构。
    2. 此功能显示变量中元素的个数。
    3. 此功能显示变量的长度。
    4. 无法返回值只打印值。
    5. 它用于调试目的。

    实施例: -

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

    输出: -

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

    的print_r(): -

    1. 打印有关变量的人类可读信息。
    2. 不以var_dump()的形式显示变量中的元素个数。
    3. 不以变量var_dump()的形式显示变量的长度。
    4. 如果我们在printf_r()中将第二个参数设置为true,则返回值。

    实施例: -

    <pre> 
    <?php 
    $a = array ('a' => 'apple', 'b' => 'banana', 'c' => array ('x', 'y', 'z')); 
    print_r ($a); 
    ?> 
    </pre> 
    

    输出: -

    <pre> 
    Array 
    (
        [a] => apple 
        [b] => banana 
        [c] => Array 
         (
          [0] => x 
          [1] => y 
          [2] => z 
         ) 
    ) 
    </pre>