使用或运算符初始化变量
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 的值。
我想用另一个变量的内容或预定义的值初始化一个变量,如果另一个变量没有设置的话。
我知道我可以使用
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 的值。