为什么三元运算符使用print而不是php中的echo?

时间:2016-08-25 20:26:55

标签: php printing echo ternary-operator

这有效:

$number = 1;
$number == 1? print 'yes' : print 'no';

但这不起作用:

$number = 1;
$number == 1? echo 'yes' : echo 'no';

为什么在PHP中发生这种情况?

2 个答案:

答案 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

http://php.net/manual/en/function.print.php

http://php.net/manual/en/function.echo.php

答案 1 :(得分:0)

三元运算符的参数必须是表达式。 print 'yes'是一个表达式,但echo 'yes'不是,因为echo是特殊语法。

使用三元运算符作为echo的参数,而不是相反。

echo $number == 1 ? 'yes' : 'no';

这与你不能写的原因相同:

$var = echo 'yes';