Search code examples
phpsyntaxparse-error

Use echo inside php one line if statement


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?


Solution

  • 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 hand echo 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