从PHP 5.3开始,可以省略中间部分 三元运算符。表达式expr1?:expr3如果expr1则返回expr1 计算结果为TRUE,否则为expr3。
有没有比跟随代码更好或更简洁的方法来设置变量的默认值?
$v = isset($v) ? $v : "default value";
答案 0 :(得分:6)
TL; DR - 不,该表达式不能缩短。
你想要的是缩短的三元表达式来执行隐式isset()
。这已在mailing list上进行了讨论,并且已创建了涵盖此概念的ifsetor
RFC。
由于在上述讨论时已经存在缩短的三元运算符,因此proposed使用不存在的运算符??
:
// PROPOSAL ONLY, DOES NOT WORK
$v = $v ?? 'default value';
如果'default value'
未定义, 分配$v
。
然而,到目前为止,主要语言并未实现这一点。在那之前,你所写的内容不能缩短。
这个可怕的结构更短,但请注意它不一样,因为如果变量存在但是评估为false
,它会分配默认值:< / p>
// DO NOT USE
$v = @$v ?: 'default value';
答案 1 :(得分:2)
刚刚问过this,并指出了这里。因此,如果您使用key
的{{1}},这可能是一项改进
array
答案 2 :(得分:2)
这是一个较短的语法:
isset($v) || $v="default value";
答案 3 :(得分:0)
不。如果你真的不知道是否设置了$v
,这是正确的方法。
答案 4 :(得分:0)
没办法。如果你使用三元运算符。