我在这里查看了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";
感谢您的考虑。
答案 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";