在php中使用echo一行if语句

时间:2013-12-03 08:45:21

标签: php syntax parse-error

如果语句与echo结合使用,我会写一行:

<?php echo ( true ) ? 'true' : 'false'; ?>

今天我确实改变了现有的多行if语句,echo最终在语句中结束,这给了我一个解析错误:

<?php ( true ) ? echo 'true' :  echo 'false'; ?>

使用print代替echo会使其有效。我认为它有效,因为print是一个函数更新:print不是一个功能,只是表现得像一个,这意味着它有一个返回值。

<?php ( true ) ? print 'true' :  print 'false'; ?>

我不理解的是echo不起作用的原因。据我所知,上面的语法只是一个常见的if语句的简写,所以这不应该是:

if (true) echo 'true'; else echo 'false';

但确实如此。谁知道?

3 个答案:

答案 0 :(得分:3)

正如您可以从PHP文档中读到的那样:

http://php.net/manual/en/language.operators.comparison.php

The expression (expr1) ? (expr2) : (expr3) evaluates to expr2 if expr1 evaluates to TRUE, and expr3 if expr1 evaluates to FALSE.

三元运算符需要expressions,这只是说a value的一种奇特方式。 Echo不会返回任何内容,因此没有任何价值意味着它不是表达式。

另一方面,打印返回something,因为它是一个函数,使其成为一个有效的表达式。

答案 1 :(得分:2)

正如您在问题中仅提到print函数打印不是函数但它有一些返回值就是为什么它可以是在表达式中也使用但另一方面echo没有任何返回值。

还要记住三元运算符会返回一个值。

“在C语言中,语句和表达式之间存在区别。语法上,echo是一个(简单)语句,如break或return,print是(一元)运算符,如”!“或”〜“。因此,与任何其他语句一样,echo不能是表达式“

的一部分

PHP将echo视为一个声明。无论你要写什么,它都将按原样显示。

您可以在此处阅读详细说明Reference: Comparing PHP's print and echo

答案 2 :(得分:2)

在PHP中,print和echo不是函数,而是语言结构,基本上print和echo不需要使用括号。

不同之处在于print是laguage构造并且可以像函数一样行为但echo不能!

PHP:echo - Manual