什么`?:`是什么意思?

Gra*_*avy 3 php ternary-operator

在在线教程中,我看到了以下代码片段:

$this->data = $data ?: \Input::all();
Run Code Online (Sandbox Code Playgroud)

这是标准的三元运算符吗?$data评估时会发生什么true

以下代码是否与我发布的原始代码完全相同?

$this->data = $data ? null : \Input::all();
Run Code Online (Sandbox Code Playgroud)

Luc*_*one 8

它是一个三元运算符,是捷径

 $this->data = $data? $data : \Input::all();
Run Code Online (Sandbox Code Playgroud)

来自http://php.net/manual/en/language.operators.comparison.php

从PHP 5.3开始,可以省略三元运算符的中间部分.

表达式expr1?:expr3如果expr1的计算结果为TRUE 则返回expr1,否则返回expr3.