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

PHP中使用`$b ?? []`与数组相加报错的问题及优化需求

解决PHP中未定义变量与空数组相加的简洁写法

这个问题的核心是运算符优先级在搞怪!PHP里+的优先级比??(null合并运算符)更高,所以你写的[] + $b ?? []会被解析成([] + $b) ?? []——这就导致先执行[] + $b,此时$b未定义,自然会抛出Undefined variable的错误。

而你单独写$b ?? []没问题,是因为这时候直接触发了null合并的逻辑,给未定义的$b返回了默认值[]。

想要不用临时变量又解决问题,只需要给$b ?? []加上括号,强制改变执行顺序就行:

$result_2 = [] + ($b ?? []);

这样PHP会先计算括号里的$b ?? [],得到一个安全的数组(不管$b是否定义),再和空数组执行相加操作,完全符合你的需求,而且比引入临时变量简洁多了。

对比你的临时变量写法,这个括号版本既保留了代码简洁性,又避免了额外变量的引入,完美解决问题~

内容的提问来源于stack exchange,提问作者mk-tool

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:13:08