Hallo
Julius hat ja schon die Doku dieser Funktion verlinkt, dennoch möchte ich etwas hinterherschieben.
echo '<pre>' . print_r($puny_email, true) . '</pre>';
Was bedeutet das "true"?
Das true
sorgt dafür, dass die Funktion nicht sofort eine Ausgabe erzeugt. In genau dem obigen Beispiel erfolgt die Ausgabe direkt im Anschluss der Ausführung von print_r
. Die Ausgabe von print_r
wird unmittelbar in die Zeichenkette eingefügt und diese mit echo
ausgegeben. Ohne true
für print_r
bräuchte man nicht einmal echo
, da print dann die (dann nackte) Ausgabe instantan sebst erzeugt.
Ich schreibe die Ausgaben von Skripten aber gerne in Variablen, die ich erst später gesammelt ausgebe. Da print_r
ohne die explizite Angabe des zweiten Parameters mit true
die Ausgabe, wie eben angemerkt, sofort erzeugt, würde mir das um die Ohren fliegen.
$temperatur = getTemerature();
$zwischenergebnisT = print_r($temperatur);
$datum = strftime("%d.%m.%Y");
$uhrzeit = strftime("%H:%M");
Mit dem obigen Code, dessen Variablen in ein HTML-Template wie dieses:
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="utf-8">
<title>Konstruktion eines Zifferfonts</title>
</head>
<body>
<header>
<h1>Konstruktion eines Zifferfonts</h1>
</header>
<main>
<section>
<h2>Ein- und Ausgabe</h2>
<dl>
<dt>Temperatur (Testausgabe)</dt>
<dd><?php echo htmlspecialchars($zwischenergebnisT); ?></dd>
<dt>Temperatur</dt>
<dd><?php echo htmlspecialchars($temperatur); ?></dd>
<dt>Datum</dt>
<dd><?php echo htmlspecialchars($datum); ?></dd>
<dt>Uhrzeit</dt>
<dd><?php echo htmlspecialchars($uhrzeit); ?></dd>
</dl>
</section>
</main>
</body>
</html>
… eingefügt werden, würde die Ausgabe von print_r
im HTML-Quelltext vor dem ersten HTML-Element stehen, da die Ausgabe sofort erfolgt. Der Wert der Variable $zwischenergebnisT
lautete true
für die erfolgreiche Ausführung der Funktion, was zu einer Ausgabe von 1
als Entsprechung von true
per echo $zwischenergebnisT;
führen würde.
Dieser Code:
$temperatur = getTemerature();
$zwischenergebnisT = print_r($temperatur, true);
$datum = strftime("%d.%m.%Y");
$uhrzeit = strftime("%H:%M");
… speichert die Ausgabe hingegen in der Variable $zwischenergebnisT
, die ihren Wert mit echo $zwischenergebnisT;
an der gewünschten Stelle im Template hergibt.
Wenn ich nur dieses ausgebe
echo $puny_email;
erhalte ich in meinem Beispiel genau das gleiche. Oder ist dieses nur Zufall?
Ja und nein. In diesem Beispiel ist die Ausgabe, wenn kein Fehler aufgetreten ist, identisch. In beiden Fällen wird ein String, nämlich der mit der Emailadresse, ausgegeben. Wäre $puny_email
ein Array, bekämst du mit echo $puny_email;
aber nur das Wort „Array“ zu sehen. Mit echo print_r($puny_email, true);
werden dir die Elemente des Arrays in der ganzen Schönheit dessen Struktur angezeigt .
Manchmal reichen die Infos, die print_r
hergibt, nicht. Dann ist var_dump
zu bevorzugen. In vielen Fällen reicht die Ausgabe von print_r
zur Analyse aber aus.
Tschö, Auge
--
Wo wir Mängel selbst aufdecken, kann sich kein Gegner einnisten.
Wolfgang Schneidewind *prust*