<?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 => 'pt_BR',
  ),
  'this' => 
  array (
    0 => 'function.echo.php',
    1 => 'echo',
    2 => 'Envia uma ou mais strings para a sa&iacute;da',
  ),
  'up' => 
  array (
    0 => 'ref.strings.php',
    1 => 'Fun&ccedil;&otilde;es de String',
  ),
  'prev' => 
  array (
    0 => 'function.crypt.php',
    1 => 'crypt',
  ),
  'next' => 
  array (
    0 => 'function.explode.php',
    1 => 'explode',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'pt_BR',
    '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">Envia uma ou mais strings para a saída</span></p>

 </div>

 <div class="refsect1 description" id="refsect1-function.echo-description">
  <h3 class="title">Descrição</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">
   Envia uma ou mais expressões para a saída, sem novas linhas ou espaços adicionais.
  </p>
  <p class="para">
   <code class="literal">echo</code> não é uma função mas sim uma construção de linguagem.
   Seus argumentos são uma lista de expressões logo após a palavra-chave <code class="literal">echo</code>,
   separadas por vírgulas e não delimitadas por parênteses.
   Diferentemente de outras construções de linguagem, <code class="literal">echo</code> não tem
   nenhum valor de retorno, portando não pode ser usada no contexto de uma expressão.
  </p>
  <p class="para">
   <code class="literal">echo</code> também tem uma sintaxe de atalho em HTML, onde pode-se
   seguir imediatamente a etiqueta de abertura com um sinal de igual. Esta sintaxe está disponível
   mesmo que a configuração <a href="ini.core.php#ini.short-open-tag" class="link">short_open_tag</a>
   esteja desabilitada.
   <div class="informalexample">
    <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000">I have <span style="color: #0000BB">&lt;?=$foo?&gt;</span> foo.</span></code></div>
    </div>

   </div>
  </p>
  <p class="para">
   As principais diferenças para a função <span class="function"><a href="function.print.php" class="function">print</a></span> são que
   <code class="literal">echo</code> aceita múltiplos argumentos e não tem um valor de retorno.
  </p>
 </div>


 <div class="refsect1 parameters" id="refsect1-function.echo-parameters">
  <h3 class="title">Parâmetros</h3>
  <p class="para">
   <dl>
    
     <dt><code class="parameter">expressions</code></dt>
     <dd>
      <p class="para">
       Uma ou mais expressões a serem enviadas para a saída, separadas por vírgula.
       Valores não-string serão convertidas forçadamente para strings, mesmo quando
       <a href="language.types.declarations.php#language.types.declarations.strict" class="link">a
       diretiva <code class="literal">strict_types</code></a> estiver habilitada.
      </p>
     </dd>
    
   </dl>
  </p>
 </div>


 <div class="refsect1 returnvalues" id="refsect1-function.echo-returnvalues">
  <h3 class="title">Valor Retornado</h3>
  <p class="para">
   Nenhum valor é retornado.
  </p>
 </div>


 <div class="refsect1 examples" id="refsect1-function.echo-examples">
  <h3 class="title">Exemplos</h3>
  <p class="para">
   <div class="example" id="example-1">
    <p><strong>Exemplo #1 Exemplos de <code class="literal">echo</code></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 não requer parênteses."</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">// Strings podem ser passadas individualmente como múltiplos argumentos ou<br />// concatenadas e passadas como um único argumento<br /></span><span style="color: #007700">echo </span><span style="color: #DD0000">'Esta '</span><span style="color: #007700">, </span><span style="color: #DD0000">'string '</span><span style="color: #007700">, </span><span style="color: #DD0000">'foi '</span><span style="color: #007700">, </span><span style="color: #DD0000">'criada '</span><span style="color: #007700">, </span><span style="color: #DD0000">'com múltiplos parâmetros.'</span><span style="color: #007700">, </span><span style="color: #DD0000">"\n"</span><span style="color: #007700">;<br />echo </span><span style="color: #DD0000">'Esta ' </span><span style="color: #007700">. </span><span style="color: #DD0000">'string ' </span><span style="color: #007700">. </span><span style="color: #DD0000">'foi ' </span><span style="color: #007700">. </span><span style="color: #DD0000">'criada ' </span><span style="color: #007700">. </span><span style="color: #DD0000">'com concatenação.' </span><span style="color: #007700">. </span><span style="color: #DD0000">"\n"</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">// Nenhuma nova linha ou espaço são adicionados; o código abaixo mostra "olámundo" em apenas uma linha<br /></span><span style="color: #007700">echo </span><span style="color: #DD0000">"olá"</span><span style="color: #007700">;<br />echo </span><span style="color: #DD0000">"mundo"</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">// O mesmo que o exemplo acima<br /></span><span style="color: #007700">echo </span><span style="color: #DD0000">"olá"</span><span style="color: #007700">, </span><span style="color: #DD0000">"mundo"</span><span style="color: #007700">;<br /><br />echo </span><span style="color: #DD0000">"Esta string ocupa<br />múltiplas linhas. As novas linhas<br />também estarão na saída."</span><span style="color: #007700">;<br /><br />echo </span><span style="color: #DD0000">"Esta string ocupa\nmúltiplas linhas. As novas linhas\ntambém estarão na saída."</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">// O argumento pode ser qualquer expressão que produza uma string<br /></span><span style="color: #0000BB">$foo </span><span style="color: #007700">= </span><span style="color: #DD0000">"exemplo"</span><span style="color: #007700">;<br />echo </span><span style="color: #DD0000">"foo é um </span><span style="color: #0000BB">$foo</span><span style="color: #DD0000">"</span><span style="color: #007700">; </span><span style="color: #FF8000">// foo é um exemplo<br /><br /></span><span style="color: #0000BB">$fruits </span><span style="color: #007700">= [</span><span style="color: #DD0000">"limão"</span><span style="color: #007700">, </span><span style="color: #DD0000">"laranja"</span><span style="color: #007700">, </span><span style="color: #DD0000">"banana"</span><span style="color: #007700">];<br />echo </span><span style="color: #0000BB">implode</span><span style="color: #007700">(</span><span style="color: #DD0000">" e "</span><span style="color: #007700">, </span><span style="color: #0000BB">$fruits</span><span style="color: #007700">); </span><span style="color: #FF8000">// limão e laranja e banana<br /><br />// Expressões não-string não convertidas à força para string, mesmo se declare(strict_types=1) for usada<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 />// Entretanto os exemplos a seguir irão funcionar:<br /></span><span style="color: #007700">(</span><span style="color: #0000BB">$some_var</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 também é uma contrução de linguagem mas<br />                                            // é uma expressão válida, retornando 1,<br />                                            // portanto pode ser usada neste contexto.<br /><br /></span><span style="color: #007700">echo </span><span style="color: #0000BB">$some_var </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">// primeiro avalia a expressão e depois passa para echo<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>Exemplo #2 <code class="literal">echo</code> não é uma expressão</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">// Como echo não se comporta como uma expressão, o código a seguir é inválido.<br /></span><span style="color: #007700">(</span><span style="color: #0000BB">$some_var</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">Notas</h3>
  <blockquote class="note"><p><strong class="note">Nota</strong>: <span class="simpara">Como esta é uma
construção da linguagem e não uma função, ela não pode ser chamada usando
<a href="functions.variable-functions.php" class="link">funções variáveis</a>
ou <a href="functions.arguments.php#functions.named-arguments" class="link">argumentos nomeados</a>.</span>
</p></blockquote>

  <blockquote class="note"><p><strong class="note">Nota</strong>: 
   <strong>Usando com parênteses</strong><br />
   <p class="para">
    Delimitar um argumento de <code class="literal">echo</code> com parênteses não irá
    causar um erro de sintaxe, e produzirá uma sintaxe que se parece com uma
    chamade normal de uma função. Entretanto, isto pode gerar confusão, porque os parênteses, na verdade,
    são parte da expressão que será enviada para a saída, e não parte da sintaxe de <code class="literal">echo</code>
    em si.

    <div class="example" id="example-3">
     <p><strong>Exemplo #3 Usando parênteses</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">"olá"</span><span style="color: #007700">, </span><span style="color: #0000BB">PHP_EOL</span><span style="color: #007700">;<br /></span><span style="color: #FF8000">// mostra "olá"<br /><br /></span><span style="color: #007700">echo(</span><span style="color: #DD0000">"olá"</span><span style="color: #007700">), </span><span style="color: #0000BB">PHP_EOL</span><span style="color: #007700">;<br /></span><span style="color: #FF8000">// também mostra "olá", porque ("olá") é uma expressão válida<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">// mostra "9"; os parênteses fazem com que 1+2 seja avaliada primeiro, e depois 3*3<br />// a instrução echo enxerga toda a expressão como um só argumento<br /><br /></span><span style="color: #007700">echo </span><span style="color: #DD0000">"olá"</span><span style="color: #007700">, </span><span style="color: #DD0000">" mundo"</span><span style="color: #007700">, </span><span style="color: #0000BB">PHP_EOL</span><span style="color: #007700">;<br /></span><span style="color: #FF8000">// mostra "olá mundo"<br /><br /></span><span style="color: #007700">echo(</span><span style="color: #DD0000">"olá"</span><span style="color: #007700">), (</span><span style="color: #DD0000">" mundo"</span><span style="color: #007700">), </span><span style="color: #0000BB">PHP_EOL</span><span style="color: #007700">;<br /></span><span style="color: #FF8000">// mostra "olá mundo"; os parênteses são parte de cada expressão<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>Exemplo #4 Expressão inválida</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">"olá"</span><span style="color: #007700">, </span><span style="color: #DD0000">" mundo"</span><span style="color: #007700">), </span><span style="color: #0000BB">PHP_EOL</span><span style="color: #007700">;<br /></span><span style="color: #FF8000">// Lança um erro de interpretação porque ("olá", " mundo") não é uma expressão válida<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

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

  <div class="tip"><strong class="tip">Dica</strong>
   <p class="para">
    Passar múltiplos argumentos para <code class="literal">echo</code> pode evitar
    complicações que surgem com a precedência do operador de concatenação no
    PHP. Por exemplo, o operador de concatenação tem precedência maior que o
    operador ternário, e antes do PHP 8.0.0 tinha a mesma precedência que adição
    e subtração:
   </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">// Abaixo, a expressão 'Olá ' . isset($name) é avaliada primeiro,<br />// e é sempre verdadeira, portanto o argumento para echo será sempre $name<br /></span><span style="color: #007700">echo </span><span style="color: #DD0000">'Olá ' </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">'Maria Rodrigues' </span><span style="color: #007700">. </span><span style="color: #DD0000">'!'</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">// O comportamento pretendido requer parênteses adicionais<br /></span><span style="color: #007700">echo </span><span style="color: #DD0000">'Olá ' </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">'Maria Rodrigues'</span><span style="color: #007700">) . </span><span style="color: #DD0000">'!'</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">// Nas versões do PHP anteriores à 8.0.0, o código abaixo mostra "2" ao invés de "Soma: 3"<br /></span><span style="color: #007700">echo </span><span style="color: #DD0000">'Soma: ' </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">// Da mesma forma, adicionar parênteses assegura a ordem pretendida de avaliação<br /></span><span style="color: #007700">echo </span><span style="color: #DD0000">'Soma: ' </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">
    Se múltiplos argumentos forem passados, os parênteses não serão
    necessário para reforçar precedência, pois cada expressão é independente:
   </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">"Olá "</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">"Maria Rodrigues"</span><span style="color: #007700">, </span><span style="color: #DD0000">"!"</span><span style="color: #007700">;<br /><br />echo </span><span style="color: #DD0000">"Soma: "</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">Veja Também</h3>
  <p class="para">
   <ul class="simplelist">
    <li><span class="function"><a href="function.print.php" class="function" rel="rdfs-seeAlso">print</a> - Exibe uma string</span></li>
    <li><span class="function"><a href="function.printf.php" class="function" rel="rdfs-seeAlso">printf()</a> - Envia uma string formatada para a sa&iacute;da</span></li>
    <li><span class="function"><a href="function.flush.php" class="function" rel="rdfs-seeAlso">flush()</a> - Descarrega o buffer na sa&iacute;da do sistema</span></li>
    <li><a href="language.types.string.php" class="link">Formas de especificar strings literais</a></li>
   </ul>
  </p>
 </div>


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