W3docs

var_dump()

Die PHP-Funktion var_dump() gibt strukturierte Informationen zu Variablen aus, einschließlich Typ, Länge und Wert – unverzichtbar beim Debuggen.

Einführung

var_dump() ist eine eingebaute PHP-Debuggingfunktion, die strukturierte Informationen zu einer oder mehreren Variablen ausgibt – einschließlich Typ, Länge und Inhalt jedes Werts – direkt an die Ausgabe. Anders als echo, das nur einen Wert ausgibt, zeigt var_dump() genau, welche Art von Wert man betrachtet, was es zur schnellsten Methode macht, um während der Entwicklung die Frage „Warum funktioniert das nicht?" zu beantworten.

Diese Seite behandelt die Syntax, die Darstellung der einzelnen PHP-Typen, die Arbeit mit Arrays und Objekten, den Unterschied zu verwandten Funktionen wie print_r() und var_export() sowie häufige Fallstricke.

Syntax

var_dump(mixed $value, mixed ...$values): void
  • $value — die zu untersuchende Variable oder der Ausdruck.
  • ...$values — beliebig viele weitere Werte; jeder wird der Reihe nach ausgegeben.
  • Rückgabewert: keiner (void). var_dump() schreibt direkt in die Ausgabe und gibt nichts zurück, das zugewiesen werden könnte.

Grundlegendes Beispiel

php— editable, runs on the server

Hier ist $var1 eine Ganzzahl, $var2 ein string und $array ein array. Die Ausgabe gibt Typ und Wert jedes Elements an:

int(10)
string(13) "Hello, world!"
array(3) {
  [0]=>
  string(5) "apple"
  [1]=>
  string(6) "banana"
  [2]=>
  string(6) "cherry"
}

Die Ausgabe enthält mehr Details als echo liefern würde:

  • int(10) — der Wert ist die Ganzzahl 10.
  • string(13) "Hello, world!" — ein string 13 Byte lang. Die Länge zu sehen ist hilfreich, um versteckten Leerraum oder Kodierungsprobleme zu erkennen.
  • Beim array zeigt jede [key]=> -Zeile den Schlüssel sowie Typ und Wert des darunter stehenden Elements.

Darstellung der einzelnen Typen

var_dump() formatiert jeden skalaren Typ anders, weshalb es informativer ist als ein einfaches Ausgeben eines Werts. Die Tabelle fasst die Notation zusammen:

PHP-TypBeispielausgabe
integerint(42)
floatfloat(3.14)
stringstring(5) "hello"
booleanbool(true)
nullNULL
arrayarray(2) { ... }
objectobject(ClassName)#1 (2) { ... }

Der boolean- und der NULL-Fall sind diejenigen, auf die Entwickler am häufigsten angewiesen sind. echo true gibt 1 aus, und echo false / echo null geben nichts aus, sodass man mit echo nicht zwischen false, null und "" unterscheiden kann – var_dump() jedoch zeigt sie klar und deutlich:

<?php
var_dump(true);
var_dump(false);
var_dump(null);
var_dump("");
var_dump(0);
var_dump("0");
?>
bool(true)
bool(false)
NULL
string(0) ""
int(0)
string(1) "0"

Man beachte, wie var_dump() die Ganzzahl 0 vom string "0" unterscheidet – ein Unterschied, der bei lockeren Vergleichen still und leise Fehler verursachen kann. Weitere Informationen zur Typprüfung finden sich unter PHP-Datentypen und gettype().

Objekte und verschachtelte Strukturen ausgeben

var_dump() durchläuft Objekte und verschachtelte Arrays rekursiv und zeigt die Sichtbarkeit (public / protected / private) jeder Eigenschaft:

<?php
class User {
    public string $name = "Ada";
    protected int $age = 36;
    private array $roles = ["admin", "editor"];
}

var_dump(new User());
?>
object(User)#1 (3) {
  ["name"]=>
  string(3) "Ada"
  ["age":protected]=>
  int(36)
  ["roles":"User":private]=>
  array(2) {
    [0]=>
    string(5) "admin"
    [1]=>
    string(6) "editor"
  }
}

Die #1 ist die interne Instanz-ID des Objekts, und (3) ist die Anzahl der Eigenschaften.

Mehrere Werte auf einmal ausgeben

Da var_dump() variadisch ist, kann man mehrere Variablen in einem einzigen Aufruf untersuchen, anstatt für jede Variable eine eigene Zeile zu schreiben:

<?php
$id    = 7;
$name  = "Grace";
$active = true;

var_dump($id, $name, $active);
?>
int(7)
string(5) "Grace"
bool(true)

var_dump() vs. print_r() vs. var_export()

Diese drei Funktionen überschneiden sich, daher ist die Wahl der richtigen wichtig:

FunktionZeigt Typen?Ausgabe ist gültiges PHP?Am besten geeignet für
var_dump()JaNeinDebuggen – meiste Details
print_r()NeinNeinLesbare, benutzerfreundliche Ansicht
var_export()NeinJaCode-/Konfigurationsdumps erzeugen

var_dump() sollte man verwenden, wenn man exakte Typen und Längen sehen muss. print_r() bietet sich an, wenn man nur einen schnellen, weniger rauschenden Blick auf die Struktur eines Arrays möchte, und var_export(), wenn man eine Ausgabe braucht, die man direkt in Quellcode einfügen kann.

Ausgabe als string erfassen

var_dump() gibt nichts zurück, daher ist $x = var_dump($y) nicht möglich. Um die Ausgabe zu erfassen (z. B. für Logging), kann man Output-Buffering verwenden:

<?php
$data = ["status" => 200, "ok" => true];

ob_start();
var_dump($data);
$dump = ob_get_clean();

// $dump now holds the var_dump output as a string
echo strlen($dump) . " characters captured\n";
?>

Hinweise und Fallstricke

  • Ausgabeziel. var_dump() schreibt in die Standardausgabe. Im Browser umschließt modernes PHP die Ausgabe mit <pre>-Tags, sodass die Struktur lesbar ist; auf der Kommandozeile wird reiner Text ausgegeben.
  • Vergessene Dumps gehen in Produktion. Ein versehentlich im Code verbliebener var_dump()-Aufruf gibt interne Daten an Benutzer weiter. Debug-Dumps vor dem Deployment entfernen oder hinter einem Debug-Flag verstecken.
  • Strings zeigen Byte-Länge, nicht Zeichenanzahl. string(13) zählt Bytes; ein Multibyte-String (UTF-8) kann eine größere Zahl als die sichtbare Zeichenanzahl ausgeben.
  • Xdebug für schönere Ausgabe verwenden. Mit der Xdebug-Erweiterung wird var_dump() automatisch überladen und erzeugt eine farbkodierte, tiefenbegrenzte Ausgabe, die wesentlich einfacher zu überblicken ist.

Fazit

var_dump() ist die erste Wahl, wenn man während der PHP-Entwicklung herausfinden möchte, was ein Wert tatsächlich ist. Es zeigt Typ, Länge, Struktur und Sichtbarkeit in einem einzigen Aufruf – Details, die einfaches echo oder print verbirgt. print_r() bietet sich für eine sauberere Lesart eines Arrays an, und var_export() wenn wiederverwendbarer PHP-Code benötigt wird – doch für rohe Debugging-Einblicke ist var_dump() kaum zu übertreffen.

Übungen

Übung
Was ist der Zweck der Funktion var_dump() in PHP?
Was ist der Zweck der Funktion var_dump() in PHP?
Was this page helpful?