Das Schlüsselwort "print" gibt in PHP einen String im Browser oder einem anderen Ausgabestream aus. Syntax und Verwendung werden hier erklärt.
Das PHP-Konstrukt print
print gibt einen String in den aktuellen Ausgabestream von PHP aus — in der Regel den Browser bei einer Webseite oder das Terminal bei einem Skript auf der Befehlszeile. Obwohl es wie eine Funktion aussieht, ist print ein Sprachkonstrukt: Es ist direkt in die Sprache eingebaut, akzeptiert genau ein Argument und gibt immer den Integer 1 zurück.
Dieser einzelne Rückgabewert unterscheidet print von echo und ermöglicht es, print innerhalb größerer Ausdrücke zu verwenden. Dieses Kapitel behandelt die Syntax, die Unterschiede zwischen print und echo, wann der Rückgabewert wichtig ist und die gebräuchlichsten Verwendungsweisen.
Syntax
print "Hello, world!";Da print ein Konstrukt und keine Funktion ist, sind die Klammern optional. Beide Formen sind gültig und verhalten sich identisch:
print "Hello, world!"; // without parentheses
print("Hello, world!"); // with parenthesesDie Klammern gruppieren lediglich das Argument; sie machen print nicht zu einem Funktionsaufruf. Es akzeptiert weiterhin nur ein Argument — Sie können keine kommagetrennte Liste übergeben, wie es echo erlaubt.
Variablen und Ausdrücke ausgeben
print wertet sein Argument zuerst aus, sodass Sie eine Variable, einen verketteten String oder einen beliebigen Ausdruck übergeben können, der einen stringähnlichen Wert ergibt. Variablen innerhalb von doppelt angeführten Strings werden automatisch interpoliert:
<?php
$name = "John";
// Interpolation inside a double-quoted string
print "Hello, $name!" . PHP_EOL; // Hello, John!
// Concatenation with the . operator
print "Sum: " . (1 + 2) . PHP_EOL; // Sum: 3PHP_EOL ist das plattformspezifische Zeilenumbruchzeichen — praktisch in Befehlszeilenskripten, damit jede Anweisung in einer eigenen Zeile ausgegeben wird. (Siehe PHP-Operatoren für den .-Verkettungsoperator und PHP-Variablen für die Interpolationsregeln.)
Den Rückgabewert verwenden
Jeder Aufruf von print gibt 1 zurück. Das klingt zunächst nutzlos, erlaubt aber, print dort einzusetzen, wo ein Wert erwartet wird — zum Beispiel innerhalb einer Zuweisung oder eines logischen Ausdrucks:
<?php
// Assigning the result (always 1)
$result = print "Success" . PHP_EOL;
echo $result . PHP_EOL; // 1
// Using print inside a ternary expression
$loggedIn = false;
$loggedIn ? print "Welcome back" : print "Please log in";echo kann nicht auf diese Weise verwendet werden: $x = echo "hi"; ist ein Syntaxfehler, weil echo nichts zurückgibt. Wenn Sie eine Ausgabe als Teil eines Ausdrucks benötigen, greifen Sie auf print zurück.
print vs echo
Die beiden sind für einfache Ausgaben nahezu austauschbar. Die Unterschiede sind gering, aber wissenswert:
| Merkmal | print | echo |
|---|---|---|
| Rückgabewert | immer 1 | keiner (kann nicht in Ausdrücken verwendet werden) |
| Anzahl der Argumente | genau eines | eines oder mehrere (kommagetrennt) |
| Relative Geschwindigkeit | etwas langsamer | etwas schneller |
In der Praxis sind beide schnell genug, dass der Geschwindigkeitsunterschied keine Rolle spielt. Verwenden Sie echo, wenn Sie mehrere Werte auf einmal ausgeben möchten; verwenden Sie print, wenn Sie einen Rückgabewert benötigen. Für einen ausführlicheren Vergleich siehe PHP echo vs print.
HTML ausgeben
Wie echo schreibt auch print einfach den angegebenen String, sodass HTML-Markup direkt an die Seite weitergegeben wird:
<?php
$title = "Welcome";
print "<h1>$title</h1>";
print "<p>This paragraph was generated with <code>print</code>.</p>";Der Browser rendert das Ergebnis als normales HTML. Denken Sie daran, alle vom Benutzer eingegebenen Daten (zum Beispiel mit htmlspecialchars()) zu escapen, bevor Sie sie ausgeben, um Cross-Site-Scripting zu vermeiden.
Zusammenfassung
printist ein Sprachkonstrukt, das einen String ausgibt und immer1zurückgibt.- Klammern sind optional —
print "x"undprint("x")sind gleichwertig. - Der Rückgabewert erlaubt den Einsatz innerhalb von Ausdrücken und Zuweisungen, im Gegensatz zu
echo. - Verwenden Sie
echofür mehrere Werte; verwenden Sieprint, wenn Sie den Rückgabewert benötigen. - Die Ausgabe (einschließlich HTML) wird unverändert geschrieben, daher sollten nicht vertrauenswürdige Daten zuerst escaped werden.