James
James

Reputation: 4783

Does null coalescing operator call a function twice?

The null coalescing operator (??) returns its first operand if it exists and is not NULL, and otherwise returns its second operand.

If the first operand is a function or method call, does the operator call the function call twice?

As an example, say the function get_name() returns a string value or null.

$name = get_name() ?? 'no name found';

So is get_name() called once and the value stored ready to assign it to the variable ($name) or when the ?? is activated due to the function returning a value that is true for isset(), does ?? call on the first operand a second time to get the value?

Upvotes: 3

Views: 831

Answers (1)

Mureinik
Mureinik

Reputation: 311188

It's only called once.

This is quite easy to see if you add a side effect to your function, such as printing, e.g.:

<?php
function get_name() {
    print("get_name() was called\n");
    return "somestring";
}

$name = get_name() ?? 'no name found';
print($name);
?>

Demo

Upvotes: 9

Related Questions