ConFoo 2025

print

(PHP 4, PHP 5, PHP 7, PHP 8)

printExibe uma string

Descrição

print(string $expression): int

Exibe o conteúdo de expression.

print não é uma função, é uma construção de linguagem. Seu argumento é a expressão logo após a palavra-chave print, não delimitada por parênteses.

As principais diferenças para echo são que print aceita apenas um único argumento e sempre retorna 1.

Parâmetros

expression

A expressão a ser mostrada. Valores não-string serão convertidos coercitivamente para strings, mesmo quando a diretiva strict_types estiver habilitada.

Valor Retornado

Retorna 1, sempre.

Exemplos

Exemplo #1 Exemplos de print

<?php
print "print não requer parênteses.";

// Não é adicionado espaço ou quebra de linha; o exemplo abaixo mostra "olámundo" em uma só linha
print "olá";
print
"mundo";

print
"Esta string ocupa
múltiplas linhas. As quebras de linha
também serão mostradas."
;

print
"Esta string ocupa\nmúltiplas linhas. As quebras de linha\ntambém serão mostradas.";

// O argumento pode ser qualquer expressão que produza uma string
$foo = "exemplo";
print
"foo é um $foo"; // foo é um exemplo

$frutas = ["limão", "laranja", "banana"];
print
implode(" e ", $frutas); // limão e laranja e banana

// Expressões não-string são convertidas coercitivamente para strings, mesmo que declare(strict_types=1) seja usada
print 6 * 7; // 42

// Como print tem um valor de retorno, pode ser usada em expressões
// O código a seguir mostra "olá mundo"
if ( print "olá" ) {
echo
" mundo";
}

// O código a seguir mostra "verdadeiro"
( 1 === 1 ) ? print 'verdadeiro' : print 'falso';
?>

Notas

Nota: Usando com parênteses

Envolver o argumento de print com parênteses não irá causar um erro de sintaxe, e produz uma sintaxe que se parece com uma chamada normal de função. Entretanto, isso pode causar confusão, porque os parênteses são na verdade parte da expressão sendo mostrada, e não parte da sintaxe de print propriamente.

<?php
print "olá";
// exibe "olá"

print("hello");
// também exibe "olá", porque ("olá") é uma expressão válida

print(1 + 2) * 3;
// exibe "9"; os parênteses fazem com que 1+2 seja avaliado primeiro, e depois 3*3
// a declaração print enxerga toda a expressão como um único argumento

if ( print("olá") && false ) {
print
" - dentro do if";
}
else {
print
" - dentro do else";
}
// Exibe " - dentro do if"
// A expressão ("olá") && false é avaliada primeiro, produzindo resultado falso.
// Isto é convertido à força para uma string vazia "" e exibido.
// A declaração print a partir daí retorna 1, então o código dentro do bloco if é executado
?>

Ao usar print com uma expressão maior, colocar tanto a palavra-chave quanto seu argumento entre parênteses pode ser necessário para gerar o resultado desejado:

<?php
if ( (print "olá") && false ) {
print
" - dentro do if";
}
else {
print
" - dentro do else";
}
// Exibe "olá - dentro do else"
// Diferentemente do exemplo anterior, a expressão (print "olá") é avaliada primeiro.
// Depois de exibir "olá", print retorna 1.
// Já que 1 && false é falso, o código dentro do bloco else é executado.

print "olá " && print "mundo";
// Exibe "mundo1"; print "mundo" é avaliado primeiro,
// e depois a expressão "olá " && 1 é passada ao print da esquerda

(print "olá ") && (print "mundo");
// Exibe "olá mundo"; os parênteses forçam a avaliação das expressões print
// antes da operação &&
?>

Nota: 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.

Veja Também

adicione uma nota

Notas Enviadas por Usuários (em inglês) 3 notes

up
31
user at example dot net
16 years ago
Be careful when using print. Since print is a language construct and not a function, the parentheses around the argument is not required.
In fact, using parentheses can cause confusion with the syntax of a function and SHOULD be omited.

Most would expect the following behavior:
<?php
if (print("foo") && print("bar")) {
// "foo" and "bar" had been printed
}
?>

But since the parenthesis around the argument are not required, they are interpretet as part of the argument.
This means that the argument of the first print is

("foo") && print("bar")

and the argument of the second print is just

("bar")

For the expected behavior of the first example, you need to write:
<?php
if ((print "foo") && (print "bar")) {
// "foo" and "bar" had been printed
}
?>
up
14
danielxmorris @ gmail dotcom
16 years ago
I wrote a println function that determines whether a \n or a <br /> should be appended to the line depending on whether it's being executed in a shell or a browser window. People have probably thought of this before but I thought I'd post it anyway - it may help a couple of people.

<?php
function println ($string_message) {
$_SERVER['SERVER_PROTOCOL'] ? print "$string_message<br />" : print "$string_message\n";
}
?>

Examples:

Running in a browser:

<?php println ("Hello, world!"); ?>
Output: Hello, world!<br />

Running in a shell:

<?php println ("Hello, world!"); ?>
Output: Hello, world!\n
up
2
mark at manngo dot net
1 year ago
The other major difference with echo is that print returns a value, even it’s always 1.

That might not look like much, but you can use print in another expression. Here are some examples:

<?php
rand
(0,1) ? print 'Hello' : print 'goodbye';
print
PHP_EOL;
print
'Hello ' and print 'goodbye';
print
PHP_EOL;
rand(0,1) or print 'whatever';
?>

Here’s a more serious example:

<?php
function test() {
return !!
rand(0,1);
}
test() or print 'failed';
?>
To Top