更简洁的方法来设置默认值?

PHP*_*Pst 5 php variables default-value variable-assignment

从PHP 5.3开始,可以省略三元运算符的中间部分.表达式expr1?:expr3如果expr1的计算结果为TRUE则返回expr1,否则返回expr3.

有没有比跟随代码更好或更简洁的方法来设置变量的默认值?

$v = isset($v) ? $v : "default value";
Run Code Online (Sandbox Code Playgroud)

Ja͢*_*͢ck 6

TL; DR - 不,那个表达式不能缩短.

你想要的是缩短的三元表达式来执行隐式isset().这已在邮件列表中进行了讨论,并且已经创建了一个涵盖该概念的ifsetorRFC.

由于缩短的三元运算符在上述讨论时已存在,因此使用不存在的运算符提出了类似的内容??:

// PROPOSAL ONLY, DOES NOT WORK
$v = $v ?? 'default value';
Run Code Online (Sandbox Code Playgroud)

分配'default value'if $v是否未定义.

但是,到目前为止,主要语言并未实现这一点.在此之前,你所写的内容不能缩短.

这个可怕的构造更短,但请注意它不一样,因为如果变量存在但它计算为false:

// DO NOT USE
$v = @$v ?: 'default value';
Run Code Online (Sandbox Code Playgroud)


小智 3

这是一个更短的语法:

isset($v) || $v="default value";
Run Code Online (Sandbox Code Playgroud)