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?

in einem
quelle

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

Sarfraz
quelle
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.

Gilzero
quelle
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.

David Yell
quelle
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.

Danny Nimmo
quelle
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.

Josh K.
quelle
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.

Akshay Khale
quelle
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.

Christian Nagel
quelle
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
ʞɔıɥʇɹɐʞ ouɐɯ
quelle
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>";
Neil Bauers
quelle
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>
HeadAndTail
quelle
"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'}.

Mahesh Chaudhary
quelle
0

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

var_dump("array1",$array1,"array2",$array2);
Jasbir Rana
quelle