A expressão a ser mostrada. Valores não-string serão convertidos coercitivamente para strings,
mesmo quando a diretiva
strict_types estiver habilitada.
<?php print "print não requer parênteses."; print PHP_EOL;
// Não é adicionado espaço ou quebra de linha; o exemplo abaixo mostra "olámundo" em uma só linha print "olá"; print "mundo"; print PHP_EOL;
print "Esta string ocupa múltiplas linhas. As quebras de linha também serão mostradas."; print PHP_EOL;
print "Esta string ocupa\nmúltiplas linhas. As quebras de linha\ntambém serão mostradas."; print PHP_EOL;
// O argumento pode ser qualquer expressão que produza uma string $foo = "exemplo"; print "foo é um $foo"; // foo é um exemplo print PHP_EOL;
$frutas = ["limão", "laranja", "banana"]; print implode(" e ", $frutas); // limão e laranja e banana print PHP_EOL;
// Expressões não-string são convertidas coercitivamente para strings, mesmo que declare(strict_types=1) seja usada print 6 * 7; // 42 print PHP_EOL;
// 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"; } print PHP_EOL;
// O código a seguir mostra "verdadeiro" ( 1 === 1 ) ? print 'verdadeiro' : print 'falso'; print PHP_EOL; ?>
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 && ?>
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 } ?>
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.