echo
(PHP 4, PHP 5, PHP 7, PHP 8)
echo — Envia uma ou mais strings para a saída
Descrição
Envia uma ou mais expressões para a saída, sem novas linhas ou espaços adicionais.
echo
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 echo
,
separadas por vírgulas e não delimitadas por parênteses.
Diferentemente de outras construções de linguagem, echo
não tem
nenhum valor de retorno, portando não pode ser usada no contexto de uma expressão.
echo
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 short_open_tag
esteja desabilitada.
I have <?=$foo?> foo.
As principais diferenças para a função print são que
echo
aceita múltiplos argumentos e não tem um valor de retorno.
Parâmetros
expressions
-
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 diretiva
strict_types
estiver habilitada.
Valor Retornado
Nenhum valor é retornado.
Exemplos
Example #1 Exemplos de echo
<?php
echo "echo não requer parênteses.";
// Strings podem ser passadas individualmente como múltiplos argumentos ou
// concatenadas e passadas como um único argumento
echo 'Esta ', 'string ', 'foi ', 'criada ', 'com múltiplos parâmetros.', "\n";
echo 'Esta ' . 'string ' . 'foi ' . 'criada ' . 'com concatenação.' . "\n";
// Nenhuma nova linha ou espaço são adicionados; o código abaixo mostra "olámundo" em apenas uma linha
echo "olá";
echo "mundo";
// O mesmo que o exemplo acima
echo "olá", "mundo";
echo "Esta string ocupa
múltiplas linhas. As novas linhas
também estarão na saída.";
echo "Esta string ocupa\nmúltiplas linhas. As novas linhas\ntambém estarão na saída.";
// O argumento pode ser qualquer expressão que produza uma string
$foo = "exemplo";
echo "foo é um $foo"; // foo é um exemplo
$fruits = ["limão", "laranja", "banana"];
echo implode(" e ", $fruits); // limão e laranja e banana
// Expressões não-string não convertidas à força para string, mesmo se declare(strict_types=1) for usada
echo 6 * 7; // 42
// Como echo não se comporta como uma expressão, o código a seguir é inválido.
($some_var) ? echo 'true' : echo 'false';
// Entretando os exemplos a seguir irão funcionar:
($some_var) ? print 'true' : print 'false'; // print também é uma contrução de linguagem, mas
// é uma expressão válida, retornando 1,
// portanto pode ser usada neste contexto.
echo $some_var ? 'true': 'false'; // primeiro avalia a expressão e depois passa para echo
?>
Notas
Note: Como esta é uma construção da linguagem e não uma função, ela não pode ser chamada usando funções variáveis ou argumentos nomeados.
Note: Usando com parênteses
Envolver um argumento de
echo
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 deecho
em si.<?php echo "olá"; // mostra "olá" echo("olá"); // também mostra "olá", porque ("olá") é uma expressão válida echo(1 + 2) * 3; // mostra "9"; os parênteses fazem com que 1+2 seja avaliada primeiro, e depois 3*3 // a instrução echo enxerga toda a expressão como um só argumento echo "olá", " mundo"; // mostra "olá mundo" echo("olá"), (" mundo"); // mostra "olá mundo"; os parênteses são parte de cada expressão echo("olá", " mundo"); // Lança um erro de interpretação porque ("olá", " mundo") não é uma expressão válida ?>
Passar múltiplos argumentos para echo
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:
<?php
// Abaixo, a expressão 'Olá ' . isset($name) é avaliada primeiro,
// e é sempre verdadeira, portanto o argumento para echo será sempre $name
echo 'Olá ' . isset($name) ? $name : 'Maria Rodrigues' . '!';
// O comportamento pretendido requer parênteses adicionais
echo 'Olá ' . (isset($name) ? $name : 'Maria Rodrigues') . '!';
// Nas versões do PHP anteriores à 8.0.0, o código abaixo mostra "2" ao invés de "Soma: 3"
echo 'Soma: ' . 1 + 2;
// Da mesma forma, adicionar parênteses assegura a ordem pretendida de avaliação
echo 'Soma: ' . (1 + 2);
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:
<?php
echo "Olá ", isset($name) ? $name : "Maria Rodrigues", "!";
echo "Soma: ", 1 + 2;
Veja Também
- print - Exibe uma string
- printf() - Envia uma string formatada para a saída
- flush() - Descarrega o buffer na saída do sistema
- Formas de especificar strings literais