从 PHP 5.3 开始,可以省略三元运算符的中间部分。表达式 expr1 ?:如果 expr1 的计算结果为 TRUE,则 expr3 返回 expr1,否则返回 expr3。
有没有比以下代码设置变量的默认值更好或更简洁的方法?
$v = isset($v) ? $v : "default value";
从 PHP 5.3 开始,可以省略三元运算符的中间部分。表达式 expr1 ?:如果 expr1 的计算结果为 TRUE,则 expr3 返回 expr1,否则返回 expr3。
有没有比以下代码设置变量的默认值更好或更简洁的方法?
$v = isset($v) ? $v : "default value";
TL;DR - 不,这个表达式不能再短了。
您想要的是缩短的三元表达式执行隐式isset()
. 这已在邮件列表中进行了讨论,并且已经创建了涵盖该概念的ifsetor
RFC 。
由于在上述讨论时已经存在缩短的三元运算符,因此使用不存在的运算符提出了类似这样的建议??
:
// PROPOSAL ONLY, DOES NOT WORK
$v = $v ?? 'default value';
'default value'
如果$v
未定义,则赋值。
然而,迄今为止,在主要语言中还没有实现类似的功能。在那之前,你写的东西不能再短了。
这个可怕的结构更短,但请注意,它不一样,因为如果变量存在,它会分配默认值,但计算结果为false
:
// DO NOT USE
$v = @$v ?: 'default value';
刚问这个,就被指到了这里。因此,如果您使用 a key
of an array
,这可能是一种改进
function isset_get($array, $key, $default = null) {
return isset($array[$key]) ? $array[$key] : $default;
}
这是一个较短的语法:
isset($v) || $v="default value";
没有。如果您真的不知道是否$v
设置,这是正确的方法。
没办法。如果你使用三元运算符。