<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/ref.strings.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'de',
  ),
  'this' => 
  array (
    0 => 'function.echo.php',
    1 => 'echo',
    2 => 'Gibt einen oder mehrere Strings aus',
  ),
  'up' => 
  array (
    0 => 'ref.strings.php',
    1 => 'String-Funktionen',
  ),
  'prev' => 
  array (
    0 => 'function.crypt.php',
    1 => 'crypt',
  ),
  'next' => 
  array (
    0 => 'function.explode.php',
    1 => 'explode',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'de',
    'path' => 'reference/strings/functions/echo.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="function.echo" class="refentry">
 <div class="refnamediv">
  <h1 class="refname">echo</h1>
  <p class="verinfo">(PHP 4, PHP 5, PHP 7, PHP 8)</p><p class="refpurpose"><span class="refname">echo</span> &mdash; <span class="dc-title">Gibt einen oder mehrere Strings aus</span></p>

 </div>

 <div class="refsect1 description" id="refsect1-function.echo-description">
  <h3 class="title">Beschreibung</h3>
  <div class="methodsynopsis dc-description">
   <span class="methodname"><strong>echo</strong></span>(<span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">...$expressions</code></span>): <span class="type"><a href="language.types.void.php" class="type void">void</a></span></div>

  <p class="simpara">
   Gibt einen oder mehrere Ausdrücke ohne zusätzliche Zeilenumbrüche oder
   Leerzeichen aus.
  </p>
  <p class="para">
   <code class="literal">echo</code> ist keine Funktion, sondern ein Sprachkonstrukt.
   Seine Argumente sind eine Liste von Ausdrücken, die dem Schlüsselwort
   <code class="literal">echo</code> folgen und nicht durch Kommas getrennt und durch
   Klammern abgegrenzt sind. Im Gegensatz zu einigen anderen Sprachkonstrukten
   hat <code class="literal">echo</code> keinen Rückgabewert, sodass es nicht im
   Zusammenhang mit einem Ausdruck verwendet werden kann.
  </p>
  <p class="para">
   <code class="literal">echo</code> 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
   <a href="ini.core.php#ini.short-open-tag" class="link">short_open_tag</a> verfügbar.
   <div class="informalexample">
    <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000">Ich habe <span style="color: #0000BB">&lt;?=$foo?&gt;</span> foo.</span></code></div>
    </div>

   </div>
  </p>
  <p class="para">
   Der Hauptunterschied zu <code class="literal">print</code> ist, dass
   <code class="literal">echo</code> mehrere Argumente entgegennimmt, und keinen
   Rückgabewert hat.
  </p>
 </div>


 <div class="refsect1 parameters" id="refsect1-function.echo-parameters">
  <h3 class="title">Parameter-Liste</h3>
  <p class="para">
   <dl>
    
     <dt><code class="parameter">expressions</code></dt>
     <dd>
      <p class="para">
       Ein oder mehrere durch Kommas getrennte String-Ausdrücke, die
       ausgegeben werden sollen. Nicht-String-Werte werden in Strings
       umgewandelt, auch wenn  <a href="language.types.declarations.php#language.types.declarations.strict" class="link">die Direktive
       <code class="literal">strict_types</code></a> aktiviert ist.
      </p>
     </dd>
    
   </dl>
  </p>
 </div>


 <div class="refsect1 returnvalues" id="refsect1-function.echo-returnvalues">
  <h3 class="title">Rückgabewerte</h3>
  <p class="para">
   Es wird kein Wert zurückgegeben.
  </p>
 </div>


 <div class="refsect1 examples" id="refsect1-function.echo-examples">
  <h3 class="title">Beispiele</h3>
  <p class="para">
   <div class="example" id="example-1">
    <p><strong>Beispiel #1 <code class="literal">echo</code>-Beispiele</strong></p>
    <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">echo </span><span style="color: #DD0000">"echo benötigt keine Klammern."</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">// Strings können entweder individuell als mehrere Argumente oder<br />// miteinander verbunden als einzelnes Argument übergeben werden<br /></span><span style="color: #007700">echo </span><span style="color: #DD0000">'Dieser '</span><span style="color: #007700">, </span><span style="color: #DD0000">'String '</span><span style="color: #007700">, </span><span style="color: #DD0000">'besteht '</span><span style="color: #007700">, </span><span style="color: #DD0000">'aus '</span><span style="color: #007700">, </span><span style="color: #DD0000">'mehreren Parametern.'</span><span style="color: #007700">, </span><span style="color: #DD0000">"\n"</span><span style="color: #007700">;<br />echo </span><span style="color: #DD0000">'Dieser  ' </span><span style="color: #007700">. </span><span style="color: #DD0000">'String ' </span><span style="color: #007700">. </span><span style="color: #DD0000">'wurde ' </span><span style="color: #007700">. </span><span style="color: #DD0000">'mit ' </span><span style="color: #007700">. </span><span style="color: #DD0000">'Stringverkettung erzeugt.' </span><span style="color: #007700">. </span><span style="color: #DD0000">"\n"</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">// Es wird kein Zeilenumbruch oder Leerzeichen eingefügt; das Folgende gibt<br />// "HalloWelt" in einer Zeile aus<br /></span><span style="color: #007700">echo </span><span style="color: #DD0000">"Hallo"</span><span style="color: #007700">;<br />echo </span><span style="color: #DD0000">"Welt"</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">// Dasselbe wie oben<br /></span><span style="color: #007700">echo </span><span style="color: #DD0000">"Hallo"</span><span style="color: #007700">, </span><span style="color: #DD0000">"Welt"</span><span style="color: #007700">;<br /><br />echo </span><span style="color: #DD0000">"Dieser String umfasst<br />mehrere Zeilen. Die Zeilenumbrüche<br />werden mit ausgegeben."</span><span style="color: #007700">;<br /><br />echo </span><span style="color: #DD0000">"Dieser String umfasst\nmehrere Zeilen. Die Zeilenumbrüche\nwerden mit ausgegeben."</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">// Das Argument kann ein beliebiger Ausdruck sein, der einen String erzeugt<br /></span><span style="color: #0000BB">$foo </span><span style="color: #007700">= </span><span style="color: #DD0000">"ein Beispiel"</span><span style="color: #007700">;<br />echo </span><span style="color: #DD0000">"foo ist </span><span style="color: #0000BB">$foo</span><span style="color: #DD0000">"</span><span style="color: #007700">; </span><span style="color: #FF8000">// foo ist ein Beispiel<br /><br /></span><span style="color: #0000BB">$fruechte </span><span style="color: #007700">= [</span><span style="color: #DD0000">"Zitrone"</span><span style="color: #007700">, </span><span style="color: #DD0000">"Orange"</span><span style="color: #007700">, </span><span style="color: #DD0000">"Banane"</span><span style="color: #007700">];<br />echo </span><span style="color: #0000BB">implode</span><span style="color: #007700">(</span><span style="color: #DD0000">" und "</span><span style="color: #007700">, </span><span style="color: #0000BB">$fruechte</span><span style="color: #007700">); </span><span style="color: #FF8000">// Zitrone und Orange und Banane<br /><br />// Nicht-String-Ausdrücke werden in String umgewandelt, auch wenn<br />// declare(strict_types=1) verwendet wird<br /></span><span style="color: #007700">echo </span><span style="color: #0000BB">6 </span><span style="color: #007700">* </span><span style="color: #0000BB">7</span><span style="color: #007700">; </span><span style="color: #FF8000">// 42<br /><br />// Folgende Beispiele funktionieren hingegen:<br /></span><span style="color: #007700">(</span><span style="color: #0000BB">$eine_variable</span><span style="color: #007700">) ? print </span><span style="color: #DD0000">'true' </span><span style="color: #007700">: print </span><span style="color: #DD0000">'false'</span><span style="color: #007700">; </span><span style="color: #FF8000">// print ist auch ein Konstrukt,<br />                         // aber es ist ein gültiger Ausdruck, der 1 zurückgibt,<br />                         // also kann es in diesem Kontext verwendet werden.<br /><br /></span><span style="color: #007700">echo </span><span style="color: #0000BB">$eine_variable </span><span style="color: #007700">? </span><span style="color: #DD0000">'true'</span><span style="color: #007700">: </span><span style="color: #DD0000">'false'</span><span style="color: #007700">; </span><span style="color: #FF8000">// den Ausdruck zuerst auswerten und<br />                                       // dann an echo übergeben<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

   </div>
  </p>
  <p class="para">
   <div class="example" id="example-2">
    <p><strong>Beispiel #2 <code class="literal">echo</code> ist kein Ausdruck</strong></p>
    <div class="example-contents">
<div class="annotation-non-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #FF8000">// Da echo sich nicht wie ein Ausdruck verhält, ist der folgende Code ungültig.<br /></span><span style="color: #007700">(</span><span style="color: #0000BB">$eine_variable</span><span style="color: #007700">) ? echo </span><span style="color: #DD0000">'true' </span><span style="color: #007700">: echo </span><span style="color: #DD0000">'false'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

   </div>
  </p>
 </div>


 <div class="refsect1 notes" id="refsect1-function.echo-notes">
  <h3 class="title">Anmerkungen</h3>
  <blockquote class="note"><p><strong class="note">Hinweis</strong>: <span class="simpara">Da dies ein Sprachkonstrukt
und keine Funktion ist, können Sie dieses nicht mit
<a href="functions.variable-functions.php" class="link">Variablenfunktionen</a> oder
<a href="functions.arguments.php#functions.named-arguments" class="link">benannten Parametern</a> verwenden.
</span></p></blockquote>

  <blockquote class="note"><p><strong class="note">Hinweis</strong>: 
   <strong>Die Verwendung mit Klammern</strong><br />
   <p class="para">
    Wenn ein einzelnes Argument in Klammern an <code class="literal">echo</code>
    ü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 der <code class="literal">echo</code>-Syntax
    selbst.

    <div class="example" id="example-3">
     <p><strong>Beispiel #3 Verwenden von Klammern</strong></p>
     <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">echo </span><span style="color: #DD0000">"Hallo"</span><span style="color: #007700">, </span><span style="color: #0000BB">PHP_EOL</span><span style="color: #007700">;<br /></span><span style="color: #FF8000">// gibt "Hallo" aus<br /><br /></span><span style="color: #007700">echo(</span><span style="color: #DD0000">"Hallo"</span><span style="color: #007700">), </span><span style="color: #0000BB">PHP_EOL</span><span style="color: #007700">;<br /></span><span style="color: #FF8000">// gibt auch "Hallo" aus, weil ("Hallo") ein gültiger Ausdruck ist<br /><br /></span><span style="color: #007700">echo(</span><span style="color: #0000BB">1 </span><span style="color: #007700">+ </span><span style="color: #0000BB">2</span><span style="color: #007700">) * </span><span style="color: #0000BB">3</span><span style="color: #007700">, </span><span style="color: #0000BB">PHP_EOL</span><span style="color: #007700">;<br /></span><span style="color: #FF8000">// gibt "9" aus; die Klammern bewirken, dass zuerst 1+2 ausgewertet wird, dann 3*3<br />// Die echo-Anweisung sieht den gesamten Ausdruck als ein Argument<br /><br /></span><span style="color: #007700">echo </span><span style="color: #DD0000">"Hallo"</span><span style="color: #007700">, </span><span style="color: #DD0000">" Welt"</span><span style="color: #007700">, </span><span style="color: #0000BB">PHP_EOL</span><span style="color: #007700">;<br /></span><span style="color: #FF8000">// gibt "Hallo Welt" aus<br /><br /></span><span style="color: #007700">echo(</span><span style="color: #DD0000">"Hallo"</span><span style="color: #007700">), (</span><span style="color: #DD0000">" Welt"</span><span style="color: #007700">), </span><span style="color: #0000BB">PHP_EOL</span><span style="color: #007700">;<br /></span><span style="color: #FF8000">// gibt "Hallo Welt" aus; die Klammern sind Teil des jeweiligen Ausdrucks<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

   </div>
  </p>

  <p class="para">
    <div class="example" id="example-4">
     <p><strong>Beispiel #4 Ungültiger Ausdruck</strong></p>
     <div class="example-contents">
     <div class="annotation-non-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">echo(</span><span style="color: #DD0000">"Hallo"</span><span style="color: #007700">, </span><span style="color: #DD0000">" Welt"</span><span style="color: #007700">), </span><span style="color: #0000BB">PHP_EOL</span><span style="color: #007700">;<br /></span><span style="color: #FF8000">// löst eine Syntaxfehler aus, weil ("Hallo", " Welt") kein gültiger Ausdruck ist<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

   </div>
  </p>
  </p></blockquote>
  <div class="tip"><strong class="tip">Tipp</strong>
   <p class="para">
    Die Übergabe mehrerer Argumente an <code class="literal">echo</code> 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:
   </p>
   <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #FF8000">// Im Folgenden wird der Ausdruck 'Hallo ' . isset($name) zuerst ausgewertet<br />// und ist immer wahr, daher ist das Argument für echo immer $name<br /></span><span style="color: #007700">echo </span><span style="color: #DD0000">'Hallo ' </span><span style="color: #007700">. isset(</span><span style="color: #0000BB">$name</span><span style="color: #007700">) ? </span><span style="color: #0000BB">$name </span><span style="color: #007700">: </span><span style="color: #DD0000">'Max Mustermann' </span><span style="color: #007700">. </span><span style="color: #DD0000">'!'</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">// Das beabsichtigte Verhalten erfordert zusätzliche Klammern<br /></span><span style="color: #007700">echo </span><span style="color: #DD0000">'Hallo ' </span><span style="color: #007700">. (isset(</span><span style="color: #0000BB">$name</span><span style="color: #007700">) ? </span><span style="color: #0000BB">$name </span><span style="color: #007700">: </span><span style="color: #DD0000">'Max Mustermann'</span><span style="color: #007700">) . </span><span style="color: #DD0000">'!'</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">// Vor PHP 8.0.0 gibt das folgende "2" aus, statt "Summe: 3"<br /></span><span style="color: #007700">echo </span><span style="color: #DD0000">'Sum: ' </span><span style="color: #007700">. </span><span style="color: #0000BB">1 </span><span style="color: #007700">+ </span><span style="color: #0000BB">2</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">// Auch hier stellt das Hinzufügen von Klammern die beabsichtigte Reihenfolge<br />// der Auswertung sicher<br /></span><span style="color: #007700">echo </span><span style="color: #DD0000">'Summe: ' </span><span style="color: #007700">. (</span><span style="color: #0000BB">1 </span><span style="color: #007700">+ </span><span style="color: #0000BB">2</span><span style="color: #007700">);</span></span></code></div>
   </div>

   <p class="para">
    Falls mehrere Argumente übergeben werden, dann sind Klammern nicht
    erforderlich, um die Vorrangigkeit zu erzwingen, da jeder Ausdruck für
    sich steht:
   </p>
   <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">echo </span><span style="color: #DD0000">"Hallo "</span><span style="color: #007700">, isset(</span><span style="color: #0000BB">$name</span><span style="color: #007700">) ? </span><span style="color: #0000BB">$name </span><span style="color: #007700">: </span><span style="color: #DD0000">"Max Mustermann"</span><span style="color: #007700">, </span><span style="color: #DD0000">"!"</span><span style="color: #007700">;<br /><br />echo </span><span style="color: #DD0000">"Summe: "</span><span style="color: #007700">, </span><span style="color: #0000BB">1 </span><span style="color: #007700">+ </span><span style="color: #0000BB">2</span><span style="color: #007700">;</span></span></code></div>
   </div>

  </div>
 </div>


 <div class="refsect1 seealso" id="refsect1-function.echo-seealso">
  <h3 class="title">Siehe auch</h3>
  <p class="para">
   <ul class="simplelist">
    <li><span class="function"><a href="function.print.php" class="function" rel="rdfs-seeAlso">print</a> - Ausgabe eines Strings</span></li>
    <li><span class="function"><a href="function.printf.php" class="function" rel="rdfs-seeAlso">printf()</a> - Liefert einen formatierten String</span></li>
    <li><span class="function"><a href="function.flush.php" class="function" rel="rdfs-seeAlso">flush()</a> - Leert (sendet) den System-Ausgabepuffer</span></li>
    <li><a href="language.types.string.php" class="link">Möglichkeiten literale Strings anzugeben</a></li>
   </ul>
  </p>
 </div>


</div><?php manual_footer($setup); ?>