什么是“;isset($x)$y:$z”;意思是


What does "isset($x) ? $y : $z" mean?

可能重复:
PHP运算符"?"answers":"被调用了什么?它们做什么
参考-这个符号在PHP中是什么意思?

我知道isset在PHP中的含义。但我见过类似isset($x) ? $y : $z的语法。这是什么意思?

这是一个三元运算符,也称为"条件表达式运算符"(感谢Oli Charlesworth(。你的代码读起来像:

if $x is set, use $y, if not use $z

在PHP和许多其他语言中,您可以在一行语句中根据条件分配值。

$variable = expression ? "the expression was true" : "the expression was false".

这相当于

if(expression){
    $variable="the expression is true";
}else{
    $variable="the expression is false";
}

你也可以嵌套这些

$x = (expression1) ?
     (expression2) ? "expression 1 and expression 2 are true" : "expression 1 is true but expression 2 is not" :
     (expression2) ? "expression 2 is true, but expression 1 is not" : "both expression 1 and expression 2 are false.";

该语句不会像编写的那样执行任何操作。

另一方面,类似的东西

$w = isset($x) ? $y : $z;

更有意义。如果$x满足isset((,则为$w分配$y的值。否则,$w被指定为$z的值。

它是单个表达式if/else块的简写。

$v = isset($x) ? $y : $z;
// equivalent to 
if (isset($x)) {
   $v = $y;
} else {
   $v = $z;
}

这意味着如果未设置$x变量,则$y的值被分配给$x,否则$z的值被指定给$x