升级PHP8后出现Unparenthesized三元表达式致命错误如何解决
报错原因
PHP 8.0及更高版本不再支持无括号的嵌套三元运算符写法。由于旧版PHP中三元运算符为左联规则,和绝大多数编程语言的右联规则不同,a ? b : c ? d : e这种写法极易出现逻辑歧义,因此PHP8直接将该写法列为致命错误,要求必须通过括号明确运算优先级。
修复方法
你提供的代码原本的判断逻辑为:
- 当工单状态为
closed时,赋值false - 当工单状态为
queue时,赋值true - 其余情况返回
aiosc_enumToBool($this->data->awaiting_reply)的处理结果
按照该逻辑,只需要给第二层嵌套的三元运算整体包裹括号,明确优先级即可,修改后的代码如下:
$this->data->awaiting_reply = ($this->data->status == 'closed') ? false : (($this->data->status == 'queue') ? true : aiosc_enumToBool($this->data->awaiting_reply));
修改后替换原文件第35行的代码即可解决报错。
内容的提问来源于stack exchange,提问作者Allemmni portal
相关产品推荐
相关产品推荐

