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

echoOutput one or more strings


echo(string ...$expressions): void

Outputs one or more expressions, with no additional newlines or spaces.

echo is not a function but a language construct. Its arguments are a list of expressions following the echo keyword, separated by commas, and not delimited by parentheses. Unlike some other language constructs, echo does not have any return value, so it cannot be used in the context of an expression.

echo also has a shortcut syntax, where you can immediately follow the opening tag with an equals sign. This syntax is available even with the short_open_tag configuration setting disabled.

I have <?=$foo?> foo.

The major differences to print are that echo accepts multiple arguments and doesn't have a return value.



One or more string expressions to output, separated by commas. Non-string values will be coerced to strings, even when the strict_types directive is enabled.

Return Values

No value is returned.


Example #1 echo examples

echo "echo does not require parentheses.";

// Strings can either be passed individually as multiple arguments or
// concatenated together and passed as a single argument
echo 'This ''string ''was ''made ''with multiple parameters.'"\n";
'This ' 'string ' 'was ' 'made ' 'with concatenation.' "\n";

// No newline or space is added; the below outputs "helloworld" all on one line
echo "hello";

// Same as above
echo "hello""world";

"This string spans
multiple lines. The newlines will be
output as well"

"This string spans\nmultiple lines. The newlines will be\noutput as well.";

// The argument can be any expression which produces a string
$foo "example";
"foo is $foo"// foo is example

$fruits = ["lemon""orange""banana"];
implode(" and "$fruits); // lemon and orange and banana

// Non-string expressions are coerced to string, even if declare(strict_types=1) is used
echo 7// 42

// Because echo does not behave as an expression, the following code is invalid.
($some_var) ? echo 'true' : echo 'false';

// However, the following examples will work:
($some_var) ? print 'true' : print 'false'// print is also a construct, but
                                            // it is a valid expression, returning 1,
                                            // so it may be used in this context.

echo $some_var 'true''false'// evaluating the expression first and passing it to echo


Note: Because this is a language construct and not a function, it cannot be called using variable functions, or named arguments.

Note: Using with parentheses

Surrounding a single argument to echo with parentheses will not raise a syntax error, and produces syntax which looks like a normal function call. However, this can be misleading, because the parentheses are actually part of the expression being output, not part of the echo syntax itself.

echo "hello";
// outputs "hello"

// also outputs "hello", because ("hello") is a valid expression

echo(2) * 3;
// outputs "9"; the parentheses cause 1+2 to be evaluated first, then 3*3
// the echo statement sees the whole expression as one argument

echo "hello"" world";
// outputs "hello world"

echo("hello"), (" world");
// outputs "hello world"; the parentheses are part of each expression

echo("hello"" world");
// Throws a Parse Error because ("hello", " world") is not a valid expression


Passing multiple arguments to echo can avoid complications arising from the precedence of the concatenation operator in PHP. For instance, the concatenation operator has higher precedence than the ternary operator, and prior to PHP 8.0.0 had the same precedence as addition and subtraction:

// Below, the expression 'Hello ' . isset($name) is evaluated first,
// and is always true, so the argument to echo is always $name
echo 'Hello ' . isset($name) ? $name 'John Doe' '!';

// The intended behaviour requires additional parentheses
echo 'Hello ' . (isset($name) ? $name 'John Doe') . '!';

// In PHP prior to 8.0.0, the below outputs "2", rather than "Sum: 3"
echo 'Sum: ' 2;

// Again, adding parentheses ensures the intended order of evaluation
echo 'Sum: ' . (2);

If multiple arguments are passed in, then parentheses will not be required to enforce precedence, because each expression is separate:

echo "Hello ", isset($name) ? $name "John Doe""!";

"Sum: "2;

See Also

Here you can write a comment

Please enter at least 10 characters.
Loading... Please wait.
* Pflichtangabe
There are no comments available yet.

Technical SEO remains relevant

Technical SEO - What is it anyway? Technical SEO refers to the optimization of the technical aspects of your website. The goal is clear! ...


Autor : admin
Category: SEO & Online-Marketing

What's new in PHP 8.2.10

PHP 8.2.10 is one of the latest versions of PHP, which brings a number of improvements and new features. In this article we will discuss some of the outstanding new features and improvements in this version. ...


Autor : admin
Category: Software-Updates

Total Commander 11.00 (final) is available! What's new?

Total Commander, a popular file manager, has recently released its latest version, 11.00. With a variety of new features and corrections, this version offers users an enhanced and optimized experience. ...


Autor : admin
Category: Software-Updates

Publish a tutorial

Share your knowledge with other developers worldwide

Share your knowledge with other developers worldwide

You are a professional in your field and want to share your knowledge, then sign up now and share it with our PHP community

learn more

Publish a tutorial