繁体   English   中英

在php中使用echo一行if语句

[英]Use echo inside php one line if statement

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

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

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

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

但是,使用print而不是echo使其工作。 我认为它有效,因为print是一个功能 更新: print不是一个函数,它只是表现为一个,这意味着它有一个返回值。

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

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

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

但确实如此。 谁知道?

您可以从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因为它是一个函数,使它成为一个有效的表达式。

正如你在问题中提到的那样, print是一个函数但是print不是一个函数,但是它有一些返回值,这就是为什么它也可以在表达式中使用但另一方面echo没有任何返回值。

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

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

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

你可以在这里阅读详细的解释参考:比较PHP的打印和回声

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

不同的是,print是laguage构造,可以像函数一样,但echo不能!

PHP:echo - 手册

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM