【问题标题】:Unexpected ')' error with conditional statement PHP 5.4 [duplicate]条件语句 PHP 5.4 出现意外的“)”错误 [重复]
【发布时间】:2018-10-06 14:45:45
【问题描述】:

必须向后移植 PHP 7 应用程序以使其与 PHP 5.4 兼容,我收到以下错误:

<b>Parse error</b>:  syntax error, unexpected ')', expecting :: (T_PAAMAYIM_NEKUDOTAYIM) in blah blah...

在我的一个函数中使用这个条件语句:

if (!empty(MY_CONSTANT)) {
   // blah...
}

很久没用PHP 5.4了,为什么会报这个错误?

【问题讨论】:

  • 为什么在没有解释的情况下投反对票?你真的认为这有帮助吗?
  • 投反对票可能是因为(a)您没有向我们展示足够的上下文来回答您的问题和/或(b)“意外')'”是@987654321的基本语法错误@.
  • 这是一个合法的问题,不应该被否决。你的括号配对很好。但是在常量而不是变量上运行 empty 会出现语法错误。
  • @Chris 这是一个有趣的案例,因为它是解析错误而不是语法错误。它几乎是一个很好的酒吧聊天话题;)
  • @spice 我赞成恢复平衡

标签: php conditional constants


【解决方案1】:

在 PHP 5.5 之前,empty() 只支持变量;其他任何事情都会导致解析错误。

如果您想检查给定的命名常量是否存在,您可以使用defined()

if ( defined('MY_CONSTANT') ) {
  // blah
}

【讨论】:

  • 是的,但在我检查常量是否留空的特定用例中没有帮助。考虑以下情况:const MY_CONSTANT = ""; if ( defined('MY_CONSTANT') ) { echo true; } 将始终返回 true,即使 MY_CONSTANT 为空。
【解决方案2】:

我试试这个,它适用于 PHP 5.4.0

  define("MY_CONSTANT", 15);
  $testingVal = MY_CONSTANT; 
  if (!empty($testingVal)) {
      echo MY_CONSTANT;
  }

【讨论】:

    猜你喜欢
    • 2015-05-29
    • 1970-01-01
    • 2013-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-25
    • 2018-06-29
    • 1970-01-01
    相关资源
    最近更新 更多