Ternary Operator (shortcut for conditional statements)

Ternary Operator

The Ternary operator in PHP, may be one of the most underutilized operators in PHP.

The reason being, is that it probably seems awkward at first glance.

$testVar = (condition) ? true : false;

Seems almost cryptic.

The operator is a shortcut, and it could or could not provide one [a shortcut] for you, so using it doesn't guarantee that.

Take this snippet:

if(isset($_POST['testVar'])){

$testVar = 'Laika';

}else{

$testVar = 'Tigher';

}

That could be reduced to this:

$testVar = (isset($_POST['testVar'])) ? 'Laika' : 'Tigher';

If you echo either one of those out, without setting the POST var, both will print out "Tigher"

Here is a real world example of how I used the ternary operator:

//for the assistance relation
$var = split("," , $row['taRelID']);
//ternary operators and in_array function used together
$spe = (!in_array('1', $var)) ? 'No' :'Yes';
$gov = (!in_array('2', $var)) ? 'No' : 'Yes';
$plan = (!in_array('3', $var)) ? 'No' : 'Yes';
$eval = (!in_array('4', $var)) ? 'No' : 'Yes';
$fina = (!in_array('5', $var)) ? 'No' : 'Yes';
$admin = (!in_array('6', $var)) ? 'No' : 'Yes';
$other = (!in_array('0', $var)) ? 'No Comments' : 'See Comments';

In the above example, I ran the variable through a split expression, (this is what I needed to do for my example, your app will vary).

The second thing I did, was to use the newly created array and check for a condition using the ternary operator.

$spe = (!in_array('1', $var)) ? 'No' :'Yes';

$other = (!in_array('0', $var)) ? 'No Comments' : 'See Comments';

See in bold the ternary operator, lets take it apart.

$spe, is the name of our new variable.

(!in_array('1', $var)), this is the condition we are looking for, it goes like this; if the the number 1 (one) is NOT in the array named $var, that is all that it is saying.

?, the question mark separates the true and false conditions that may apply, after we check for values.

'No', will be the value if the number 1(one) is NOT in our array.

:, the colon separates the true from the false.

'Yes', will be the value if the number 1(one) IS in our array.

What the operator does is give us an elegant way to handle conditions, and in some cases less code.

For more references:

http://us3.php.net/ternary

If you have any questions post them, and we can work through any and/or all, take care and good luck.


More by this Author


Comments 2 comments

A Friend 7 years ago

That was interesting. Good article Alpho011. Yes the Ternary Operator does seem awkward at first glance. It is an elegant one line expression, but it sucks for readiblity in my opinion. Unless people put in spaces. I preferr to see an indented if else statement, but thats just me.Does using Ternary Operator this way execute faster than using an if else statement?


Alpho011 profile image

Alpho011 7 years ago from Marietta, Georgia Author

don't know, very good question.

I would guess if based on the length of the condition, that you are checking.

    Sign in or sign up and post using a HubPages Network account.

    0 of 8192 characters used
    Post Comment

    No HTML is allowed in comments, but URLs will be hyperlinked. Comments are not for promoting your articles or other sites.


    Click to Rate This Article
    working