PHP三元运算符(';简写';if语句)


PHP Ternary operator ('shorthand' if-statement)

我在这里复习了PHP手册:#3三元运算符

但我不明白为什么这三个都不能像预期的那样发挥作用:

   $a = array('a','b','c');
    //works
    if(isset($a)){echo "yes";} else {echo "no";}
    //works 
    isset($a) == true ? $answer = "yes" : $answer = "no";
    echo $answer;
    //does not work
    isset($a) == true ? echo "yes" : echo "no";

感谢您的考虑。

由于三元表达式是一个表达式,因此其操作数也必须是表达式。echo不是一个表达式,它是一个语句,不能在需要表达式的地方使用。所以最后一个不起作用的原因和你不能写的原因一样:

$a = echo "abc";

将语句重写为,

echo isset($a) == true ? "yes" : "no";

三元运算符的作用与if语句不同。三元运算符不执行第二个或第三个表达式,而是返回它。

正确的方法是:

echo isset($a) == true ? "yes" : "no";

也无需将其与true:进行比较

echo isset($a) ? "yes" : "no";

因为当您使用三元运算符时,您需要计算运算符的优先级和关联性

您可以将代码重写为

echo isset($a) ? "yes" : "no";

您的最后一行代码应该是这样的;

echo isset($a) == true ?  "yes" :  "no";