PHP 三元运算符(?:)

示例

可以将三元运算符视为内联if语句。它包括三个部分。在operator和两个结果。语法如下:

$value = <operator> ? <true value> : <false value>

如果将operator评估为true,则将返回第一个块中的值(<true value>),否则将返回第二个块中的值(<false value>)。由于我们要设置$value三元运算符的结果,因此它将存储返回的值。

例:

$action = empty($_POST['action']) ? 'default' : $_POST['action'];

$action'default'如果empty($_POST['action'])计算结果为true,则将包含字符串。否则它将包含的值$_POST['action']。

该表达式的(expr1) ? (expr2) : (expr3)计算结果expr2是否expr1为true,expr3如果expr1计算为false。

可以省略三元运算符的中间部分。如果计算结果为TRUE,则expr1 ?: expr3返回表达式,否则返回。通常被称为猫王运算符。expr1expr1expr3?:

这种行为类似于空合并运算符??,除了??需要左操作数是准确null而?:试图解决左操作数为布尔并检查它是否解析为布尔值false。

例:

function setWidth(int $width = 0){
    $_SESSION["width"] = $width ?: getDefaultWidth();
}

在此示例中,setWidth接受width参数或默认值为0以更改width会话值。如果$width为0($width未提供if ),它将解析为布尔值false,getDefaultWidth()而是使用的值。getDefaultWidth()如果$width未解析为布尔值false,则不会调用该函数。

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