341 Stimmen

php var_dump() vs print_r()

Was ist der Unterschied zwischen var_dump() y print_r() in Bezug auf die Ausgabe eines Arrays als String?

1voto

HeadAndTail Punkte 804

var_dump() :-

  1. Diese Funktion zeigt strukturierte Informationen über einen oder mehrere Ausdrücke an, die deren Typ und Wert enthalten. Arrays und Objekte werden rekursiv untersucht, wobei die Werte eingerückt werden, um die Struktur zu zeigen.
  2. Diese Funktion zeigt die Anzahl der Elemente in einer Variablen an.
  3. Diese Funktion zeigt die Länge der Variablen an.
  4. Kann den Wert nicht zurückgeben, sondern nur ausdrucken.
  5. Sie dient der Fehlersuche.

Beispiel :-

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

Ausgang :-

   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. Druckt menschenlesbare Informationen über eine Variable.
  2. Keine Anzeige der Anzahl der Elemente in einer Variablen als var_dump().
  3. Keine Anzeige der Länge der Variablen in einer Variablen als var_dump().
  4. Gibt den Wert zurück, wenn wir den zweiten Parameter in printf_r() auf true setzen.

Beispiel :-

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

Ausgabe:-

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

1voto

Jasbir Rana Punkte 231

Wir können mehrere Parameter mit var_dump übergeben übergeben:

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

1voto

Regnalf Punkte 103

Für alle, die die Funktion var_dump() zum Testen benötigen!

Ich habe meine eigene Test-Dump-Funktion geschrieben, weil ich das ob_start ... Zeug nicht immer wieder machen wollte. Das Schöne daran ist, dass sie sogar die Parameternamen aus dem Quellcode übernimmt!

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);

}

0voto

Print_r() und var_dump() sind Array-Debugging-Funktionen, die in PHP zum Debuggen verwendet werden. print_r() gibt die Array-Schlüssel und seine Mitglieder als Array([Schlüssel] = Wert) zurück, während var_dump() eine Array-Liste mit seinen Array-Schlüsseln mit Datentyp und Länge zurückgibt, z.B. Array(array_length){[0] = string(1)'a'}.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X