PHP 三元运算符(?:)
示例
可以将三元运算符视为内联if语句。它包括三个部分。在operator和两个结果。语法如下:
$value = <operator> ? <true value> : <false value>
如果将operator评估为true,则将返回第一个块中的值(<truevalue>),否则将返回第二个块中的值(<falsevalue>)。由于我们要设置$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,则不会调用该函数。
有关将变量转换为布尔值的更多信息,请参见类型。