php var_dump () vs print_r ()


297

Was ist der Unterschied zwischen var_dump()und print_r()in Bezug auf das Ausspucken eines Arrays als String?

Antworten:


355

Die var_dumpFunktion zeigt strukturierte Informationen zu Variablen / Ausdrücken einschließlich Typ und Wert an . Arrays werden rekursiv mit Werten untersucht, die eingerückt sind, um die Struktur anzuzeigen. Außerdem wird angezeigt, welche Arraywerte und Objekteigenschaften Referenzen sind.

Das print_r()zeigt Informationen zu einer Variablen auf eine Weise an, die für Menschen lesbar ist. Array-Werte werden in einem Format angezeigt, das Schlüssel und Elemente anzeigt . Eine ähnliche Notation wird für Objekte verwendet.

Beispiel:

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

var_dump($obj) wird unterhalb der Ausgabe auf dem Bildschirm angezeigt.

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

Und print_r($obj)wird unterhalb der Ausgabe auf dem Bildschirm angezeigt.

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

Mehr Info


76
print_r (null) gibt nichts zurück, während var_dump (null) NULL zurückgibt, was beim Debuggen nützlich ist
rosh3000

7
Können Sie Ihre Antwort mit 'var_export' erweitern?
Joryl

1
Zwei Vorteile von var_dump () sind, dass die ausgegebenen Informationen automatisch in ein Pre-Element eingeschlossen werden. Wenn Sie var_dump () verwenden, können Sie sehen, dass jeder Typ seine eigene Farbe hat. Verbesserung der Lesbarkeit.
Julian

3
@ Julian nur wenn xdebug installiert ist
Leif Neland

57

Allgemein, print_r( ) Ausgabe schöner, prägnanter und leichter zu lesen, auch besser lesbar, kann jedoch keine Datentypen anzeigen.

Mit können print_r()Sie die Ausgabe auch in einer Variablen speichern:

$output = print_r($array, true);

welche var_dump() nicht geht. Dennoch var_dump()können Datentypen zeigen.


9
var_dump () kann in einer Variablen gespeichert werden, obwohl es etwas hässlicher ist: stackoverflow.com/questions/139474/…
SgtPooki

7
Sie können auch 'Bruder' var_export (), wenn Sie speichern müssen
CSᵠ

21

var_dump() zeigt Ihnen den Typ der Sache sowie was darin enthalten ist.

So erhalten Sie => (string)"var" Beispiel ist hier.

print_r() gibt nur den Inhalt aus.

Würde ausgeben => "var" Beispiel ist hier.


12
Ich denke, das bessere Beispiel wäre, var_dump(0.0);welche Ausgänge float(0)gegen print_r(0.0);welche Ausgänge 0(was zu einer möglichen
Typverwirrung führt

13

Wenn Sie fragen, wann Sie was verwenden sollen, verwende ich im Allgemeinen print_r()zum Anzeigen von Werten und var_dump()bei Problemen mit Variablentypen.


8

var_dumpZeigt strukturierte Informationen zum Objekt / zur Variablen an. Dies beinhaltet Typ und Werte. Mögenprint_r Arrays werden durch rekursiv und eingerückt.

print_rzeigt lesbar an Informationen zu den Werten in einem Format an, in dem Schlüssel und Elemente für Arrays und Objekte dargestellt werden.

Das Wichtigste ist, var_dumpdass sowohl der Typ als auch die Werte ausgegeben werden, während print_rdies nicht der Fall ist.


5

Signifikante Unterschiede zwischen var_dump undprint_r

Beide Funktionen geben Informationen über die Variable aus , es werden jedoch var_dumpmehrere Parameter ausgegeben, wobei print_rzwei Parameter entfernt werden können, wobei der erste Parameter die Variable ist, die Sie sichern möchten, und der zweite ein boolescher Wert ist.

var_dumpkann keinen Wert zurückgeben, es kann nur die Werte ausgeben / drucken, wobei print_r die Variableninformationen zurückgeben kann, wenn wir den zweiten Parameter von print_rauf true setzen . Der zurückgegebene Wert von print_rwird in Zeichenfolge angegeben vorliegen.

Die von gedruckten Informationen print_rsind viel besser lesbarvar_dump Rohwerte werden.

print_rDie Funktion kann in vielen Kontexten var_dumpverwendet werden, in denen sie hauptsächlich für Debugging-Zwecke verwendet werden kann, da sie keinen Wert zurückgeben kann.


1
vardumpnimmt ein oder mehrere Argumente und jedes wird ausgegeben.
Bischof

@ Bischof, ja, Sie sind richtig, es kann mehr Argumente nehmen, aber es gibt keinen Wert zurück
Akshay Khale

Also deine Antwort korrigieren?
Govind Rai

Es ist behoben @GovindRai
Akshay Khale

"var_dump kann keinen Wert zurückgeben"? Ja, kann es. Irgendwie. ob_start(); var_dump($var); $dump=ob_get_clean();
Sinus Mackowaty

3

Ich würde außerdem empfehlen, die Ausgabe von var_dump () oder printr bei der Ausgabe in einen Browser in ein Pre- Tag zu setzen.

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

Gibt ein besser lesbares Ergebnis.


2

var_dump($var) zeigt detaillierte Details, indem zusätzliche Details von bereitgestellt werden

  • Datentyp des Werts (einschließlich der untergeordneten Elemente)
  • Anzahl der Elemente in einer Variablen
  • Länge des Wertes

1

Bei großen Arrays kann print_r weitaus mehr Informationen anzeigen, als nützlich sind. Sie können es so abschneiden und die ersten 2000 Zeichen oder die Anzahl der benötigten Zeichen anzeigen.

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

1

var_dump (): -

  1. Diese Funktion zeigt strukturierte Informationen zu einem oder mehreren Ausdrücken an, einschließlich Typ und Wert. Arrays und Objekte werden rekursiv mit Werten untersucht, die eingerückt sind, um die Struktur anzuzeigen.
  2. Diese Funktion zeigt die Anzahl der Elemente in einer Variablen an.
  3. Diese Funktion zeigt die Länge der Variablen an.
  4. Der Wert kann nicht zurückgegeben werden. Drucken Sie nur den Wert.
  5. Es wird zum Debuggen verwendet.

Beispiel: -

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

Ausgabe :-

   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 lesbare Informationen zu einer Variablen.
  2. Die Anzahl der Elemente in einer Variablen wird nicht als var_dump () angezeigt.
  3. Die Länge der Variablen in einer Variablen wird nicht als var_dump () angezeigt.
  4. Geben Sie 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>

"Der Wert kann nicht zurückgegeben werden, nur der Wert wird gedruckt." Ja, kann es. Irgendwie. ob_start(); var_dump($var); $dump=ob_get_clean();
Sinus Mackowaty

0

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


0

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

var_dump("array1",$array1,"array2",$array2);
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.