条件语句 PHP 5.4 出现意外的“)”错误 [重复]

Posted

技术标签:

【中文标题】条件语句 PHP 5.4 出现意外的“)”错误 [重复]【英文标题】:Unexpected ')' error with conditional statement PHP 5.4 [duplicate] 【发布时间】: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 我赞成恢复平衡 【参考方案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;
  

【讨论】:

以上是关于条件语句 PHP 5.4 出现意外的“)”错误 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

php [Laravel - 自定义错误消息] Laravel 5.4其他登录条件 - 添加自定义错误消息。 #All #Script #Laravel #Php

JMeter 5.4打开测试计划时出现意外错误

将 php 代码从 5.4 迁移到 php 7

Laravel 5.4 路由中的双箭头错误(语法错误,意外的 '=>' (T_DOUBLE_ARROW))

PHP:注册页面上出现语法错误意外“require_once”

将静态图像添加到 php 邮件系统时,为啥会出现“意外 CID”错误?