How to Use the PHP Ternary Operator

The PHP ternary operator stands as a more compact alternative to the if…else statement, promoting code simplicity and readability. It turns lengthy conditional structures into a manageable, single line of code, contributing to cleaner and more efficient programming.

You may also like: Moving from the PHP Ternary Operator, let’s take a look at the array_filter function in PHP, a practical tool for filtering array elements.

PHP Ternary Operator

The PHP ternary operator offers a succinct alternative to the traditional if…else statement. Here’s a standard if…else construct in PHP:

<?php

if (condition) {
	$result = value1;
} else {
	$result = value2;
}

You have the option to utilize this:

$result = condition ? value1 : value2;
  • Initially, PHP examines the given condition. Depending on its truthfulness, it either yields value1 (if the condition is true) or value2 (if it’s false);
  • Next, PHP allocates the outcome derived from this evaluation to the variable $result;
  • This demonstrates how the ternary operator simplifies coding by condensing it.

It’s noteworthy that this operator is called ‘ternary’ because it operates with three elements: the condition, value1, and value2.

Illustrating PHP’s Ternary Operator with Examples

Close-up of a person's hands typing code on a laptop

Imagine a scenario where you need to display different links based on the user’s login status. In PHP, a common approach is to use an if…else statement. Here’s an example:

<?php

$is_user_logged_in = false;

if ($is_user_logged_in) {
	$title = 'Logout';
} else {
	$title = 'Login';
}

In this case, since $is_user_logged_in is false, $title will be set to ‘Login’. While effective, this method can be verbose. A more succinct alternative is using the ternary operator, as shown below:

<?php

$is_user_logged_in = false;

$title = $is_user_logged_in ? 'Logout' : 'Login';

This compact form achieves the same result with less code. Furthermore, for longer expressions, the ternary statement can be formatted for clarity:

<?php

$is_user_logged_in = false;

$title = $is_user_logged_in
			? 'Logout'
			: 'Login';

This method not only makes the code more readable but also maintains its functionality efficiently.

Utilizing the Compact Ternary Operator in PHP

With the release of PHP 5.3, developers have the option to implement the compact ternary operator in this manner:

$result = $initial ?: $default;

This operator allows for a concise evaluation in PHP. It checks the $initial variable in a boolean context. If $initial evaluates to true, PHP will assign its value to the $result variable. If not, $default is assigned to $result instead.

An example of using this operator is demonstrated below, where the value of $path is assigned to $url if $path is not null or empty. Should $path be empty, the operator assigns a default string ‘/’ to $url:

<?php

$path = '/about';
$url = $path ?: '/';

echo $url; // /about

Output:

/about

This example effectively illustrates the utility of the compact ternary operator in PHP for streamlined code and efficient value assignment.

Implementing Nested Ternary Operators in PHP

Cartoon of a programmer with code and web technology icons

In PHP, it’s possible to nest ternary operators within each other by using parentheses for more complex conditional logic.

Consider a scenario where you need to display different messages based on user eligibility and credit status. Here’s an example where two ternary operators are nested:


<?php

$eligible = true;
$has_credit = false;

$message = $eligible
			? ($has_credit
					? 'Can use the credit'
					: 'Not enough credit')
			: 'Not eligible to buy';

echo $message;

While nesting ternary operators is technically feasible, it often leads to code that is harder to read and understand. In such situations, opting for if…else or if…elseif constructs is generally more advisable for clarity and maintainability.

Conclusion 

The ternary operator (?:) serves as a concise alternative to the if…else statement. It is recommended to use this operator when it simplifies and enhances the readability of your code.