空合并运算符是否会两次调用一个函数?

时间:2018-09-30 20:41:44

标签: php php-7 null-coalescing-operator

空合并运算符(??)返回其第一个操作数(如果存在且不为NULL),否则返回其第二个操作数。

如果第一个操作数是函数或方法调用,操作员是否会两次调用该函数调用?

例如,假设函数get_name()返回字符串值或null。

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

get_name()被调用一次,并且存储的值准备好将其分配给变量($name),或者由于功能返回的值为真而激活??时对于isset()??是否第二次调用第一个操作数来获取值?

1 个答案:

答案 0 :(得分:5)

只叫一次。

这很容易看出您是否在功能上添加了副作用,例如打印:

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

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

Demo