三元运算符()
三元运算符可以被认为是内联 if
语句。它由三部分组成。operator
和两个结果。语法如下:
$value = <operator> ? <true value> : <false value>
如果 operator
被评估为 true
,则返回第一个块中的值(<true value>
),否则将返回第二个块中的值(<false value>
)。由于我们将 $value
设置为我们的三元运算符的结果,因此它将存储返回的值。
例:
$action = empty($_POST['action']) ? 'default' : $_POST['action'];
如果 empty($_POST['action'])
评估为真,则 $action
将包含字符串'default'
。否则它将包含 $_POST['action']
的值。
表达式 (expr1) ? (expr2) : (expr3)
如果 expr1
评估为 true
则评估为 expr2
,如果 expr1
评估为 false
则表示 expr3
。
可以省略三元运算符的中间部分。如果 expr1
的计算结果为 TRUE,则表达式 expr1 ?: expr3
返回 expr1
,否则返回 expr3
。?:
通常被称为猫王运算符。
这类似于 Null Coalescing 运算符 ??
,除了 ??
要求左操作数正好是 null
而 ?:
尝试将左操作数解析为布尔值并检查它是否解析为 boolean false
。
例:
function setWidth(int $width = 0){
$_SESSION["width"] = $width ?: getDefaultWidth();
}
在此示例中,setWidth
接受宽度参数或默认值 0,以更改宽度会话值。如果 $width
为 0(如果未提供 $width
),将解析为布尔值 false,则使用 getDefaultWidth()
的值。如果 $width
没有解析为 boolean false,则不会调用 getDefaultWidth()
函数。
有关将变量转换为布尔值的更多信息,请参阅类型 。