为什么三元运算符在php中使用print而不使用echo?
这项工作:为什么三元运算符在php中使用print而不使用echo?,php,printing,echo,ternary-operator,Php,Printing,Echo,Ternary Operator,这项工作: $number = 1; $number == 1? print 'yes' : print 'no'; 但这不起作用: $number = 1; $number == 1? echo 'yes' : echo 'no'; 为什么在PHP中会发生这种情况?检查日志以获取警告。三元运算符必须返回一个值print始终返回1,但echo不返回值 关于您关于在函数中放入echo的评论,默认情况下,未显式返回值的函数返回null,因此,函数确实返回值: 三元运算符的参数必须是表达式p
$number = 1;
$number == 1? print 'yes' : print 'no';
但这不起作用:
$number = 1;
$number == 1? echo 'yes' : echo 'no';
为什么在PHP中会发生这种情况?检查日志以获取警告。三元运算符必须返回一个值
print
始终返回1
,但echo
不返回值
关于您关于在函数中放入echo
的评论,默认情况下,未显式返回值的函数返回null
,因此,函数确实返回值:
三元运算符的参数必须是表达式
print'yes'
是一个表达式,但echo'yes'
不是,因为echo
是一种特殊语法
使用三元运算符作为echo的参数,而不是相反
echo $number == 1 ? 'yes' : 'no';
这和你不能写作的原因是一样的:
$var = echo 'yes';
请参阅:简言之,它只接受具有返回值的操作,如
打印
。同样,请参阅手册:根据我的测试,它是否返回值并不重要。我创建了一个函数“foo”,在它里面我只写了一个echo(不返回任何东西),然后我用这个“foo”函数代替了print,即使它不返回任何东西,它也能工作。@user3646717,请参阅我的最新评论答案。谢谢Barmar,你知道我如何区分特殊语法和其他语法吗,有什么链接可以让我进一步了解这个主题吗?@user3646717您可以从文档中看出。它表示,print
返回1
,这意味着它必须是一个表达式。但是echo
的文档说它没有返回任何东西。再次感谢Barmar。