【问题标题】:Use echo inside php one line if statement [duplicate]在 php 中使用 echo 一行 if 语句
【发布时间】:2013-12-19 05:35:08
【问题描述】:

我习惯写一行 if 语句结合 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';

但确实如此。有谁知道吗?

【问题讨论】:

  • This 可能会有所帮助
  • 只在问题内回答。

标签: php syntax parse-error


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

    PHP 将 echo 视为一个语句。无论您写什么,它都会按原样显示。

    你可以在这里阅读详细说明Reference: Comparing PHP's print and echo

    【讨论】:

    • @oGeez 正确打印不是一个函数,但它返回值与回声无关,我更新了我的答案
    【解决方案3】:

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

    不同之处在于 print 是语言结构,可以像函数一样表现,但 echo 不能!

    PHP:echo - Manual

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-07
      • 1970-01-01
      • 2012-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多