这有效:
$number = 1;
$number == 1? print 'yes' : print 'no';
但这不起作用:
$number = 1;
$number == 1? echo 'yes' : echo 'no';
为什么在PHP中发生这种情况?
答案 0 :(得分:0)
检查日志以获取警告。三元运算符必须返回一个值。 print
返回1
始终,但echo
不会返回值。
关于将echo
置于函数中的注释,默认情况下未显式返回值的函数返回null
,因此,该函数确实返回了一个值:
http://php.net/manual/en/functions.returning-values.php
http://php.net/manual/en/language.operators.comparison.php#language.operators.comparison.ternary
答案 1 :(得分:0)
三元运算符的参数必须是表达式。 print 'yes'
是一个表达式,但echo 'yes'
不是,因为echo
是特殊语法。
使用三元运算符作为echo
的参数,而不是相反。
echo $number == 1 ? 'yes' : 'no';
这与你不能写的原因相同:
$var = echo 'yes';