由于PHP 5.3,就可以离开了三元运算符的中间部分。 表达式表达式1:如果expr1的值为TRUE,而表达式3否则expr3返回值为表达式1。
有什么比下面的代码来设置变量的默认值更好或更简洁的方式?
$v = isset($v) ? $v : "default value";
由于PHP 5.3,就可以离开了三元运算符的中间部分。 表达式表达式1:如果expr1的值为TRUE,而表达式3否则expr3返回值为表达式1。
有什么比下面的代码来设置变量的默认值更好或更简洁的方式?
$v = isset($v) ? $v : "default value";
下面是一个较短的语法:
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';
刚才问这和在这里指出。 所以,如果你使用一个key
的的array
,这可能是一种进步
function isset_get($array, $key, $default = null) {
return isset($array[$key]) ? $array[$key] : $default;
}
不。 这是正确的方式,如果你真的不知道是否$v
设置。
没有方式。如果你使用三元运算符。