任何更简洁的方式来设置默认值?(Any more concise way to set defaul

2019-07-04 01:14发布

由于PHP 5.3,就可以离开了三元运算符的中间部分。 表达式表达式1:如果expr1的值为TRUE,而表达式3否则expr3返回值为表达式1。

有什么比下面的代码来设置变量的默认值更好或更简洁的方式?

$v = isset($v) ? $v : "default value";

Answer 1:

下面是一个较短的语法:

isset($v) || $v="default value";


Answer 2:

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';


Answer 3:

刚才问这和在这里指出。 所以,如果你使用一个key的的array ,这可能是一种进步

function isset_get($array, $key, $default = null) {
    return isset($array[$key]) ? $array[$key] : $default;
}


Answer 4:

不。 这是正确的方式,如果你真的不知道是否$v设置。



Answer 5:

没有方式。如果你使用三元运算符。



文章来源: Any more concise way to set default values?