I use to write one line if statements combined with echo like this:
<?php echo ( true ) ? 'true' : 'false'; ?>
Today I did alter en existing multi line if statement and the echo
ended up inside the statement, which gave me a parse error:
<?php ( true ) ? echo 'true' : echo 'false'; ?>
Using print
instead of echo
makes it work, though. I figure that it works because print
is a function. Update: print
is not a function it just behaves like one, which means it has a return value.
<?php ( true ) ? print 'true' : print 'false'; ?>
What I don't understand is the reason why echo doesn't work. As i understand is the above syntax just a shorthand for a common if statement, so this shouldn't be working either:
if (true) echo 'true'; else echo 'false';
But it does. Someone who knows?
As you only mentioned in your question that
print
is a function but print is not a function but it has some return value thats why it can be used in expressions also but on the other handecho
doesnot have any return value.also keep in mind that Ternary operator returns a value.
"In C-alike languages there is a distinction between statements and expressions. Syntactically, echo is a (simple) statement, like break or return and print is an (unary) operator, like "!" or "~". Therefore, like any other statement, echo cannot be part of an expression"
PHP treat echo as a statement.whatever you will write that will be displayed as it is.
you can read the detailed explanation here Reference: Comparing PHP's print and echo