26

What's the best, preferred way of writing if shorthand one-liner such as:

expression ? $foo : $bar 

Plot twist: I need to echo $foo or echo $bar. Any crazy tricks? :)

7
  • 1
    Ternary statement, not shorthand if. What's the actual question here? Commented Nov 27, 2013 at 3:16
  • 1
    echo expression ? $foo : $bar; Commented Nov 27, 2013 at 3:17
  • 1
    @Phil: Conditional expression, not ternary statement. :) Were it a statement, echo would work in the branches. And the only reason you can get away with calling it the ternary anything is that there's currently only one ternary operator. "Ternary" meaning having to do with three, though...it's not a very helpful name. :) Commented Nov 27, 2013 at 3:22
  • @cHao Ah yes, s/statement/operator. It just bothers me when I hear shorthand if Commented Nov 27, 2013 at 3:26
  • Nowadays we have the elvis '??' operator stackoverflow.com/a/1993455/560287 Commented Apr 16, 2021 at 12:37

5 Answers 5

66
<?=(expression) ? $foo : $bar?> 

edit: here's a good read for you on the topic

edit: more to read

Sign up to request clarification or add additional context in comments.

10 Comments

The parentheses are redundant
I've never seen PHP fail to evaluate the conditional expression, no matter how complex, sans a pair of wrapping parentheses
Don't mind me, I'm just a stickler for unnecessary syntax (like using parentheses in ternaries and include / require statements)
If you're in the habit of using and and or in your conditions rather than && and ||, it can trip you up. But only because the wordy operators have different precedence.
what can i do if I want to echo only when true and do nothing on false?
|
12
echo (expression) ? $foo : $bar; 

Comments

7

The ternary operator evaluates to the value of the second expression if the first one evaluates to TRUE, and evaluates to the third expression if the first evaluates to FALSE. To echo one value or the other, just pass the ternary expression to the echo statement.

echo expression ? $foo : $bar; 

Read more about the ternary operator in the PHP manual for more details: http://php.net/manual/en/language.operators.comparison.php#language.operators.comparison.ternary

Comments

0

Great answers above, and I love when programmers ask questions like this to create clear, concise and clinical coding practices. For anyone that might find this useful:

<?php // grabbing the value from a function, this is just an example $value = function_to_return_value(); // returns value || FALSE // the following structures an output if $value is not FALSE echo ( !$value ? '' : '<div>'. $value .'</div>' ); // the following will echo $value if exists, and nothing if not echo $value ?: ''; // OR (same thing as) echo ( $value ?: '' ); // or null coalesce operator echo $value ?? ''; // OR (same thing as) echo ( $value ?? '' ); ?> 

References:

Comments

-1
 // check if it value is true then display value otherwise it display empty or '' <?= $color ? $color : ''; ?> // same thing if condition is true then display Condition is true otherwise display Condition is false <?php echo $condition ? 'Condition is true' : 'Condition is false';?> 

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.