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

时间:2011-11-29 22:28:11

标签: php syntax

  

可能重复:
  What are the PHP operators "?" and ":" called and what do they do?
  Reference - What does this symbol mean in PHP?

我知道PHP中isset的含义。但是我看到了像isset($x) ? $y : $z这样的语法。这是什么意思?

5 个答案:

答案 0 :(得分:8)

这是Ternary Operator,也称为“条件表达式算子”(感谢Oli Charlesworth)。您的代码如下:

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

答案 1 :(得分:2)

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

$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.";

答案 2 :(得分:2)

该声明不会像书面那样做任何事情。

另一方面像

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

更有意义。如果$ x满足isset(),则$ w​​被赋予$ y的值。否则,$ w被赋予$ z的值。

答案 3 :(得分:0)

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

答案 4 :(得分:0)

如果/ else阻止,它是单个表达式的简写。

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

// equivalent to 
if (isset($x)) {
   $v = $y;
} else {
   $v = $z;
}
相关问题