空合并运算符(??
)返回其第一个操作数(如果存在且不为NULL),否则返回其第二个操作数。
如果第一个操作数是函数或方法调用,操作员是否会两次调用该函数调用?
例如,假设函数get_name()
返回字符串值或null。
$name = get_name() ?? 'no name found';
get_name()
被调用一次,并且存储的值准备好将其分配给变量($name
),或者由于功能返回的值为真而激活??
时对于isset()
,??
是否第二次调用第一个操作数来获取值?
答案 0 :(得分:5)
只叫一次。
这很容易看出您是否在功能上添加了副作用,例如打印:
<?php
function get_name() {
print("get_name() was called\n");
return "somestring";
}
$name = get_name() ?? 'no name found';
print($name);
?>