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

时间:2016-04-18 21:52:23

标签: php

我在这里查看了PHP手册:#3 ternary operators

但我不明白为什么所有这三个都没有按预期运作:

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

感谢您的考虑。

5 个答案:

答案 0 :(得分:4)

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

$a = echo "abc";

答案 1 :(得分:1)

将语句重写为,

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

三元运算符的功能与if语句完全不同。三元运算符不执行第二个或第三个表达式,它返回它。

答案 2 :(得分:0)

正确的方法是:

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

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

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

答案 3 :(得分:0)

因为当你使用三元运算符时,你需要计算运算符的优先级和结合性

您可以将代码重写为

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

答案 4 :(得分:0)

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

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