echo
(PHP 4, PHP 5, PHP 7, PHP 8)
echo — Gibt einen oder mehrere Strings aus
Beschreibung
...$expressions
): voidGibt einen oder mehrere Ausdrücke ohne zusätzliche Zeilenumbrüche oder Leerzeichen aus.
echo
ist keine Funktion, sondern ein Sprachkonstrukt.
Seine Argumente sind eine Liste von Ausdrücken, die dem Schlüsselwort
echo
folgen und nicht durch Kommas getrennt und durch
Klammern abgegrenzt sind. Im Gegensatz zu einigen anderen Sprachkonstrukten
hat echo
keinen Rückgabewert, sodass es nicht im
Zusammenhang mit einem Ausdruck verwendet werden kann.
echo
besitzt zusätzlich eine Syntax-Kurzform, bei der
Sie ein Gleichheitszeichen direkt nach einem öffnenden PHP-Tag anfügen.
Diese Syntax ist auch bei deaktivierter Konfigurationseinstellung
short_open_tag verfügbar.
Ich habe <?=$foo?> foo.
Der Hauptunterschied zu print
ist, dass
echo
mehrere Argumente entgegennimmt, und keinen
Rückgabewert hat.
Parameter-Liste
-
expressions
-
Ein oder mehrere durch Kommas getrennte String-Ausdrücke, die ausgegeben werden sollen. Nicht-String-Werte werden in Strings umgewandelt, auch wenn die Direktive
strict_types
aktiviert ist.
Rückgabewerte
Es wird kein Wert zurückgegeben.
Beispiele
Beispiel #1 echo
-Beispiele
<?php
echo "echo benötigt keine Klammern.";
// Strings können entweder individuell als mehrere Argumente oder
// miteinander verbunden als einzelnes Argument übergeben werden
echo 'Dieser ', 'String ', 'besteht ', 'aus ', 'mehreren Parametern.', "\n";
echo 'Dieser ' . 'String ' . 'wurde ' . 'mit ' . 'Stringverkettung erzeugt.' . "\n";
// Es wird kein Zeilenumbruch oder Leerzeichen eingefügt; das Folgende gibt
// "HalloWelt" in einer Zeile aus
echo "Hallo";
echo "Welt";
// Dasselbe wie oben
echo "Hallo", "Welt";
echo "Dieser String umfasst
mehrere Zeilen. Die Zeilenumbrüche
werden mit ausgegeben.";
echo "Dieser String umfasst\nmehrere Zeilen. Die Zeilenumbrüche\nwerden mit ausgegeben.";
// Das Argument kann ein beliebiger Ausdruck sein, der einen String erzeugt
$foo = "ein Beispiel";
echo "foo ist $foo"; // foo ist ein Beispiel
$fruechte = ["Zitrone", "Orange", "Banane"];
echo implode(" und ", $fruechte); // Zitrone und Orange und Banane
// Nicht-String-Ausdrücke werden in String umgewandelt, auch wenn
// declare(strict_types=1) verwendet wird
echo 6 * 7; // 42
// Da echo sich nicht wie ein Ausdruck verhält, ist der folgende Code ungültig.
($eine_variable) ? echo 'true' : echo 'false';
// Folgende Beispiele funktionieren hingegen:
($eine_variable) ? print 'true' : print 'false'; // print ist auch ein Konstrukt,
// aber es ist ein gültiger Ausdruck, der 1 zurückgibt,
// also kann es in diesem Kontext verwendet werden.
echo $eine_variable ? 'true': 'false'; // den Ausdruck zuerst auswerten und
// dann an echo übergeben
?>
Anmerkungen
Hinweis: Da dies ein Sprachkonstrukt und keine Funktion ist, können Sie dieses nicht mit Variablenfunktionen oder benannten Parametern verwenden.
Hinweis: Die Verwendung mit Klammern
Wenn ein einzelnes Argument in Klammern an
echo
übergeben wird, löst das keinen Syntaxfehler aus und erzeugt eine Syntax, die wie ein normaler Funktionsaufruf aussieht. Dies kann jedoch irreführend sein, denn die Klammern sind tatsächlich Teil des auszugebenden Ausdrucks und nicht Teil derecho
-Syntax selbst.
<?php
echo "Hallo";
// gibt "Hallo" aus
echo("Hallo");
// gibt auch "Hallo" aus, weil ("Hallo") ein gültiger Ausdruck ist
echo(1 + 2) * 3;
// gibt "9" aus; die Klammern bewirken, dass zuerst 1+2 ausgewertet wird, dann 3*3
// Die echo-Anweisung sieht den gesamten Ausdruck als ein Argument
echo "Hallo", " Welt";
// gibt "Hallo Welt" aus
echo("Hallo"), (" Welt");
// gibt "Hallo Welt" aus; die Klammern sind Teil des jeweiligen Ausdrucks
echo("Hallo", " Welt");
// löst eine Syntaxfehler aus, weil ("Hallo", " Welt") kein gültiger Ausdruck ist
?>
Die Übergabe mehrerer Argumente an echo
kann
Schwierigkeiten vermeiden, die durch den Vorrang des Verkettungsoperators
in PHP entstehen. Zum Beispiel hat der Verkettungsoperator eine höhere
Priorität als der Ternäre und vor PHP 8.0.0 hatte er die gleiche Rangfolge
wie die Addition und die Subtraktion:
<?php
// Im Folgenden wird der Ausdruck 'Hallo ' . isset($name) zuerst ausgewertet
// und ist immer wahr, daher ist das Argument für echo immer $name
echo 'Hallo ' . isset($name) ? $name : 'Max Mustermann' . '!';
// Das beabsichtigte Verhalten erfordert zusätzliche Klammern
echo 'Hallo ' . (isset($name) ? $name : 'Max Mustermann') . '!';
// Vor PHP 8.0.0 gibt das folgende "2" aus, statt "Summe: 3"
echo 'Sum: ' . 1 + 2;
// Auch hier stellt das Hinzufügen von Klammern die beabsichtigte Reihenfolge
// der Auswertung sicher
echo 'Summe: ' . (1 + 2);
Falls mehrere Argumente übergeben werden, dann sind Klammern nicht erforderlich, um die Vorrangigkeit zu erzwingen, da jeder Ausdruck für sich steht:
<?php
echo "Hallo ", isset($name) ? $name : "Max Mustermann", "!";
echo "Summe: ", 1 + 2;
Siehe auch
- print - Ausgabe eines Strings
- printf() - Liefert einen formatierten String
- flush() - Leert (sendet) den System-Ausgabepuffer
- Möglichkeiten literale Strings anzugeben