(PHP 4, PHP 5, PHP 7)
echo — Output one or more strings
$arg1
[, string $...
] ) : voidOutputs all parameters. No additional newline is appended.
echo
is not actually a function (it is a
language construct), so you are not required to use parentheses
with it. echo
(unlike some other language
constructs) does not behave like a function, so it cannot
always be used in the context of a function. Additionally, if you want to
pass more than one parameter to echo
, the parameters
must not be enclosed within parentheses.
echo
also has a shortcut syntax, where you can
immediately follow the opening tag with an equals sign. Prior to PHP 5.4.0,
this short syntax only works with the
short_open_tag configuration
setting enabled.
I have <?=$foo?> foo.
The major differences to print
are that
echo
accepts an argument list and doesn't have a return value.
arg1
The parameter to output.
...
No value is returned.
Example #1 echo
examples
<?php
echo "Hello World";
// 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.', chr(10);
echo 'This ' . 'string ' . 'was ' . 'made ' . 'with concatenation.' . "\n";
// Because echo does not behave like a function, 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 behaves like a function, so
// it may be used in this context.
echo $some_var ? 'true': 'false'; // changing the statement around
?>
Note: Because this is a language construct and not a function, it cannot be called using variable functions.
A benefit to passing in multiple arguments over using concatenation in echo regards the precedence of the period operator in PHP. If multiple arguments are passed in, then parentheses will not be required to enforce precedence:
<?php
echo "Sum: ", 1 + 2;
echo "Hello ", isset($name) ? $name : "John Doe", "!";
With concatenation, the period operator has the same precedence as the addition operator, and higher precedence than the ternary operator, so parentheses must be used for the correct behaviour:
<?php
echo 'Sum: ' . (1 + 2);
echo 'Hello ' . (isset($name) ? $name : 'John Doe') . '!';