"If a worker wants to do his job well, he must first sharpen his tools." - Confucius, "The Analects of Confucius. Lu Linggong"
Front page > Programming > What is the Elvis operator in PHP and how does it work?

What is the Elvis operator in PHP and how does it work?

Published on 2024-11-19
Browse:292

What is the Elvis operator in PHP and how does it work?

Taming the Elvis Operator (?:) in PHP

The mysterious ?: operator has graced some PHP code, leaving you puzzled. This concise article delves into its enigmatic nature, unraveling its true purpose.

Unveiling the ?: Operator

The ?: operator, also known as the "Elvis operator," functions akin to a ternary operator. However, its unique characteristic lies in the absence of an expression to evaluate to if the predicate proves true. Here's a breakdown of its behavior:

It evaluates to the left operand if the left operand is truthy, i.e., not null, empty string, false, or zero.
If the left operand is falsy, it evaluates to the right operand.
Crucially, the expression for the left operand is evaluated only once, ensuring efficiency.

Illustrative Examples

To further clarify, consider the following code snippet:

$items = $items ?: $this->_handle->result('next', $this->_result, $this);

In this instance, if $items is truthy (non-null or non-empty), the value of $items is assigned to itself. However, if $items is falsy, the result of $this->_handle->result('next', $this->_result, $this) is assigned to $items. This effectively handles undefined values by providing a default value.

Additional Applications

The ?: operator also proves useful in self-checking scenarios:

foo = foo ?: bar;

Here, foo will be assigned the value of bar if foo is null or falsy. Otherwise, foo remains unchanged.

Showcase of Versatility

To illustrate its versatility, consider these examples:

var_dump(5 ?: 0); // 5
var_dump(false ?: 0); // 0
var_dump(null ?: 'foo'); // 'foo'
var_dump(true ?: 123); // true
var_dump('rock' ?: 'roll'); // 'rock'
var_dump('' ?: 'roll'); // 'roll'
var_dump('0' ?: 'roll'); // '0'
var_dump('42' ?: 'roll'); // '42'

The Origin of "Elvis Operator"

Its peculiar moniker, "Elvis operator," stems from its resemblance to Elvis Presley's hair. Just as Elvis's locks were either styled in a bushy pompadour or slicked back, the operator's left operand is either truthy or falsy, determining the resulting value.

Latest tutorial More>

Disclaimer: All resources provided are partly from the Internet. If there is any infringement of your copyright or other rights and interests, please explain the detailed reasons and provide proof of copyright or rights and interests and then send it to the email: [email protected] We will handle it for you as soon as possible.

Copyright© 2022 湘ICP备2022001581号-3