PHP – Debugging – Was steckt in meiner Variable?

PHP läuft auf dem Server – du siehst keine Browserkonsole wie bei JavaScript. Wenn eine Variable nicht den erwarteten Wert hat oder ein Array anders aufgebaut ist als gedacht, tappst du schnell im Dunkeln. Mit print_r() und var_dump() kannst du dir den Inhalt jeder Variable direkt auf der Seite ausgeben lassen – schnell eingebaut, schnell wieder entfernt.

Abschnitte: print_r – lesbare Ausgabe, var_dump – mit Typen und Längen, Auskommentieren statt löschen, Danach aufräumen.

print_r() gibt den Inhalt einer Variable übersichtlich aus – besonders bei Arrays sehr praktisch. Du baust es direkt ins HTML ein:

<?php print_r($nugget); ?>

Die Ausgabe erscheint direkt auf der Seite, genau an der Stelle wo du den Code eingebaut hast. Für ein Array sieht das so aus:

Array
(
    [titel]     => gap vs. margin
    [kategorie] => css
    [tags]      => Array
        (
            [0] => gap
            [1] => margin
            [2] => flexbox
        )
)

Du siehst alle Schlüssel und ihre Werte – verschachtelte Arrays werden eingerückt dargestellt. Für den schnellen Überblick reicht print_r() meistens vollkommen aus.

var_dump – mit Typen und Längen

var_dump() zeigt zusätzlich den Datentyp und die Länge jedes Wertes. Das ist nützlich wenn du wissen willst ob eine Variable wirklich eine Zahl ist, ein Text, oder vielleicht doch null:

<?php var_dump($nugget); ?>

Die Ausgabe ist ausführlicher als bei print_r():

array(4) {
  ["titel"]=>
  string(13) "gap vs. margin"
  ["kategorie"]=>
  string(3) "css"
  ["tags"]=>
  array(3) {
    [0]=>
    string(3) "gap"
    [1]=>
    string(6) "margin"
    [2]=>
    string(7) "flexbox"
  }
}

string(13) bedeutet: es ist ein Text mit 13 Zeichen. array(3) bedeutet: ein Array mit 3 Einträgen. So erkennst du sofort ob der Typ stimmt – oder ob zum Beispiel eine Zahl versehentlich als Text gespeichert wurde.

Auskommentieren statt löschen

Wenn du mehrere Debug-Ausgaben ausprobierst, musst du nicht jedes Mal löschen und neu eintippen. In PHP kannst du eine Zeile mit # oder // auskommentieren – sie wird dann komplett ignoriert:

<?php # print_r($nugget); ?>
<?php var_dump($nugget); ?>

Hier wird nur var_dump() ausgeführt – print_r() ist auskommentiert. Um zu wechseln, verschiebst du das # einfach in die andere Zeile. Kein Löschen, kein neu eintippen.

Danach aufräumen

Debug-Ausgaben gehören nicht auf die fertige Seite – jeder Besucher würde sonst die rohen Array-Inhalte sehen. Bevor du eine Seite veröffentlichst, entfernst du alle print_r() und var_dump() wieder.

Ein einfacher Weg: Such in Notepad++ nach print_r und var_dump – über Suchen → In allen geöffneten Dokumenten suchen findest du alle Stellen auf einen Blick.