var_dump()和print_r()在输出字符串数组方面有什么区别?


Var_dump()将向您显示对象的类型以及其中的内容。

你会得到=> (string)示例如下。

Print_r()只输出内容。

示例如下:


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

Print_r显示关于值的人类可读信息,其格式显示数组和对象的键和元素。

需要注意的最重要的事情是var_dump将输出类型和值,而print_r则不会。


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
)

更多信息

var_dump print_r


如果您问什么时候应该使用什么,我通常使用print_r()来显示值,使用var_dump()来处理变量类型的问题。


通常,print_r()输出更好,更简洁,更容易阅读,也就是更易于人类阅读,但不能显示数据类型。

使用print_r(),你也可以将输出存储到一个变量中:

$output = print_r($array, true);

这是var_dump()无法做到的。然而var_dump()可以显示数据类型。


var_dump和print_r之间存在显著差异

这两个函数都转储关于变量的信息,但var_dump将被转储的多个参数,其中print_r可以取两个参数,其中第一个参数是您想要转储的变量,第二个参数是一个布尔值。

Var_dump不能返回任何值,它只能转储/打印值,而当我们将print_r的第二个参数设置为true时,print_r可以返回变量信息。print_r的返回值将是字符串格式。

print_r打印的信息更具有可读的格式,而var_dump则打印原始值。

Print_r函数可以在许多上下文中使用,其中var_dump可以主要用于调试目的,因为它不能返回值。


Var_dump ($var)通过提供

值的数据类型(包括后代元素) 变量中的元素数 值的长度


我还建议在输出到浏览器时,将var_dump()或printr的输出放到pre标记中。

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

将给出更可读的结果。


对于大型数组,print_r显示的信息可能远远超出有用的范围。您可以像这样截断它,显示前2000个字符或任何您需要的字符。

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

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


var_dump() :-

此函数显示关于一个或多个表达式的结构化信息,其中包括表达式的类型和值。数组和对象用缩进的值递归地探索以显示结构。 这个函数显示变量中元素的个数。 这个函数显示变量的长度。 不能返回值,只能打印值。 用于调试目的。

例子:-

<?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 (): -

打印关于变量的人类可读信息。 不显示变量中的元素数,如var_dump()。 不显示变量中的变量长度为var_dump()。 如果在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>

我们可以通过var_dump传递多个参数 如:

var_dump("array1",$array1,"array2",$array2);

这太简单了。var_dump()函数显示关于变量/表达式的结构化信息,包括其类型和值。而print_r()以人类可读的方式显示关于变量的信息。

示例:假设我们有以下数组,我们想显示它的内容。

$arr = array ('xyz', false, true, 99, array('50'));

print_r()函数-显示人类可读的输出

Array
(
    [0] => xyz
    [1] =>
    [2] => 1
    [3] => 99
    [4] => Array
        (
            [0] => 50
        )
)

var_dump()函数-显示值和类型

array(5) {
  [0]=>
  string(3) "xyz"
  [1]=>
  bool(false)
  [2]=>
  bool(true)
  [3]=>
  int(100)
  [4]=>
  array(1) {
    [0]=>
    string(2) "50"
  }
}

详情请访问:https://stackhowto.com/how-to-display-php-variable-values-with-echo-print_r-and-var_dump/


对于所有需要var_dump()函数进行测试的人!

I've written my own test dump function, cause i didn't whant to do that ob_start ... stuff over and over again. The nice thing, it even get's the parameter names from source!
function test_dump (...$params)
{
    
    $file_test_dump = 'test_dump.log';

    $backtrace = debug_backtrace(0, 3);

    $caller_file        = $backtrace[0]['file']);  
    $caller_function    = $backtrace[1]['function'];
    $caller_line        = $backtrace[0]['line'];

    if (empty($params))
    {
        file_put_contents ($file_test_dump, "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n" , FILE_APPEND);
        file_put_contents ($file_test_dump, '!!!!!! ' . date ("[Y-m-d H:i:s:u]", time()) . " - FILE: {$caller_file} | FUNCTION: {$caller_function} | LINE: {$caller_line} !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! \n\n" , FILE_APPEND);
        file_put_contents ($file_test_dump, "!!! No parameter given !!! \n\n" , FILE_APPEND);
        return;
    }
    
    

    // --- get source file ---
    $source_file = file($backtrace[0]['file']);
    
    // --- get line of source file and pre filter with regex ---
    preg_match ('~\(([^*]*)\)~', $source_file [intval($backtrace[0]['line']) - 1], $parameter_line);
    $parameter_line_filtered = str_replace(" ", "", $parameter_line [1]);

    // put parameter names into array
    $params_names = explode(',', $parameter_line_filtered);



    // --- OUTPUT   ----
    
    file_put_contents ($file_test_dump, "#######################################################################################################################################################################################################################\n" , FILE_APPEND);
    file_put_contents ($file_test_dump, '### ' . date ("[Y-m-d H:i:s:u]", time()) . " - FILE: {$caller_file} | FUNCTION: {$caller_function} | LINE: {$caller_line} ### \n\n" , FILE_APPEND);
    
    
    $i = 0;
    
    foreach ($params as $param)
    {

        $i++;

        file_put_contents ($file_test_dump, "   --- Parameter " . $i . ': ' . $params_names[$i - 1] . " --------------------------------------------------------------------------------------------------------------------------\n", FILE_APPEND);

        if (    is_array($param)    ||
                is_object($param) ||
                is_bool($param) )
        {
            ob_start();
            var_dump($param);
            file_put_contents ($file_test_dump, ob_get_contents() . "\n\n", FILE_APPEND);
            ob_end_clean();
        }
        else
        {
            file_put_contents ($file_test_dump, $param . "\n\n", FILE_APPEND);
        }


    }

    file_put_contents ($file_test_dump, "\n\n", FILE_APPEND);

}