我在这里复习了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";