You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel后端出现Unparenthesized `a ? b : c ?: d`废弃错误求助

解决Laravel中三元运算符废弃语法报错问题

问题原因

PHP 7.4及以上版本废弃了无括号的嵌套三元表达式写法(a ? b : c ?: d),编译器无法明确这种写法的运算优先级,必须通过括号明确逻辑分支,否则会触发废弃警告。

原代码问题点

原代码里的表达式$edit ? $shop->percent : old('percent')?:'90'属于无括号嵌套三元运算,违反了PHP新版本的语法规范。

修复方案

根据业务逻辑选择对应的修复方式:

方案1(符合编辑场景逻辑)

如果业务逻辑是:编辑状态下取店铺的percent值,非编辑状态下优先取表单旧输入值,无旧输入值则用默认值90,给old('percent') ?: '90'添加括号:

<?php echo Form::select('percent', \VanguardLTE\Shop::$values['percent_labels'], $edit ? $shop->percent : (old('percent') ?: '90'), ['class' => 'form-control']); ?>

方案2(另一种逻辑场景)

如果业务逻辑是:先根据$edit状态取对应值,若该值为空则用默认值90,给$edit ? $shop->percent : old('percent')添加括号:

<?php echo Form::select('percent', \VanguardLTE\Shop::$values['percent_labels'], ($edit ? $shop->percent : old('percent')) ?: '90', ['class' => 'form-control']); ?>

说明

两种方案的核心都是通过括号明确三元运算的优先级,消除语法歧义,符合PHP 7.4+的语法要求,从而解决废弃警告问题。

内容的提问来源于stack exchange,提问作者Mario Rossi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 03:09:54