使用或运算符初始化变量

时间:2015-09-28 10:43:45

标签: php lazy-evaluation

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

我知道我可以使用

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

我认为这样做会更优雅:

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

上次我检查过,这确实有用(或者我的记忆在欺骗我)。但是在这里,当我打印$ var2时,它总是1。看来PHP检查语句$var1 || "predefined value"是否为真,并将1分配给$var2

我希望将“预定义值”分配给$ var2,以防$ var1不存在。
PHP的任何特性我在这里都缺少这个工作吗?

提前致谢

2 个答案:

答案 0 :(得分:1)

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

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

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

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

答案 1 :(得分:0)

我刚刚在 PHP 7 中看到,

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

看起来像这样:

$c = $a ?? $b;

可以像这样扩展:

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

说明:$ c将被赋予左边的第一个值,这不是NULL。