使用或运算符初始化变量

initialise variable using or operator

我想用另一个变量的内容或预定义的值初始化一个变量,如果另一个变量没有设置的话。

我知道我可以使用

if(isset($var1)){
    $var2 = $var1;
} else{
    $var2 = "predefined value";
}

我觉得这样做会更优雅:

$var2 = $var1 || "predefined value";

上次我检查时,这确实有效(或者我的记忆在愚弄我)。但是在这里,当我打印 $var2 时,它总是 1。似乎 PHP 检查语句 $var1 || "predefined value" 是否为真并将 1 分配给 $var2.

我希望将 "predefined value" 分配给 $var2,以防 $var1 不存在。
PHP 我在这里缺少任何特性来完成这项工作吗?

提前致谢

我通常会像这样创建一个辅助函数:

function issetor(&$var, $def = false) {
    return isset($var) ? $var : $def;
}

并使用变量的引用调用它:

$var2 = issetor($var1, "predefined");

我刚刚在PHP7中看到

会有一个新的缩写
$c = ($a === NULL) ? $b : $a;

它看起来像这样:

$c = $a ?? $b;

并且可以这样扩展:

$c = $a ?? $b ?? $c ?? $d;

解释:$c 将被赋值为左起第一个非 NULL 的值。