三元运算符()

三元运算符可以被认为是内联 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() 函数。

有关将变量转换为布尔值的更多信息,请参阅类型