print()
Unser Artikel erklärt die PHP-Funktion print(), mit der eine Zeichenkette ausgegeben wird. Diese Funktion ähnelt der echo()-Funktion in PHP.
print ist ein PHP-Sprachkonstrukt, das eine Zeichenkette ausgibt. Es ist eine der häufigsten Methoden, um Text an den Browser oder das Terminal zu senden, neben echo. Diese Seite behandelt die Syntax von print, die eine Eigenschaft, die es von echo unterscheidet (seinen Rückgabewert), das Verhalten von Klammern und typische Fallstricke.
Ein Sprachkonstrukt – keine Funktion – bedeutet, dass print Teil der Sprachgrammatik selbst ist. In der Praxis ist das der Grund, warum man print "x" ohne Klammern schreiben kann, genauso wie bei echo.
Syntax
int print(string $expression)print nimmt ein einziges Argument, $expression, das in eine Zeichenkette umgewandelt und in die Ausgabe geschrieben wird. Es gibt immer 1 zurück, sodass es in größeren Ausdrücken verwendet werden kann, wo echo nicht möglich wäre.
Da Klammern optional sind, sind alle folgenden Schreibweisen gültig:
print "Hello, World!";
print("Hello, World!");
print "Sum is " . (2 + 3);Ein einfaches Beispiel
Die Ausgabe lautet:
Hello, World!print vs. echo
print und echo sehen fast identisch aus, aber es gibt zwei echte Unterschiede:
echo | print | |
|---|---|---|
| Rückgabewert | keiner (gibt nichts zurück) | immer 1 |
| Mehrere Argumente | ja — echo $a, $b; | nein — nur ein Argument |
| Geschwindigkeit | geringfügig schneller | geringfügig langsamer |
Die Unterschiede sind minimal, daher entscheiden sich die meisten Projekte für eines und bleiben dabei. Verwende echo, wenn du mehrere Werte gleichzeitig ausgeben möchtest; greife auf print nur zurück, wenn du einen Rückgabewert innerhalb eines Ausdrucks benötigst. Einen direkten Vergleich findest du unter echo und print in PHP.
<?php
// echo can take several arguments separated by commas
echo "a", "b", "c"; // abc
// print cannot — this is a syntax error:
// print "a", "b";
?>Den Rückgabewert nutzen
Da print den Wert 1 zurückgibt, kann es dort verwendet werden, wo ein Ausdruck erwartet wird. Das ist gelegentlich praktisch in einer Bedingung oder einem Ternary-Operator, wo echo nicht kompilieren würde:
<?php
$loggedIn = true;
// Ternary: the print runs and evaluates to 1, but we only care about the side effect.
$loggedIn
? print("Welcome back!\n")
: print("Please sign in.\n");
?>Ausgabe:
Welcome back!Dieses Muster ist in echtem Code selten – ein einfaches if/else mit echo ist klarer – aber es erklärt, warum print überhaupt einen Wert zurückgibt.
Variablen und HTML ausgeben
print gibt jede Zeichenkette aus, die du erstellst, einschließlich HTML. Das Interpolieren von Variablen in doppelt gequoteten Zeichenketten ist die idiomatische Methode, Text und Daten zu mischen:
<?php
$user = "Ada";
print "<p>Hello, $user!</p>\n";
print 'Single quotes do NOT interpolate: $user' . "\n";
?>Ausgabe:
<p>Hello, Ada!</p>
Single quotes do NOT interpolate: $userBeachte den Unterschied: Doppelte Anführungszeichen ("...") expandieren $user, einfache Anführungszeichen ('...') geben ihn wörtlich aus.
Häufige Fallstricke
printist nicht für Arrays oder Objekte gedacht. Das Übergeben eines Arrays gibt das wörtliche WortArrayaus und löst eine Hinweismeldung aus. Um strukturierte Daten zu überprüfen, verwende stattdessenprint_r()odervar_dump().- Die Ausgabe escapet nichts.
printschreibt reinen Text. Wenn du Benutzereingaben in HTML ausgibst, schließe sie inhtmlspecialchars()ein, um XSS zu vermeiden. - Für formatierte Ausgaben bevorzuge
printf. Wenn du Auffüllung, Zahlenformatierung oder Platzhalter benötigst, sindprintf()undsprintf()die richtigen Werkzeuge.
Zusammenfassung
print gibt eine einzelne Zeichenkette aus, gibt immer 1 zurück und akzeptiert optionale Klammern. Es ist für die alltägliche Ausgabe austauschbar mit echo; der einzige Grund, es zu bevorzugen, ist wenn du seinen Rückgabewert innerhalb eines Ausdrucks benötigst. Zum Debuggen von Arrays und Objekten wechsle zu print_r() oder var_dump(); für formatierte Zeichenketten verwende printf().