PHP:判断变量未定义则赋值并自增的更短语法咨询
更简洁的PHP语法实现方案
嘿,你已经用三元表达式迈出了简化的一步,其实PHP里还有更简洁、可读性更好的写法来实现这个逻辑!
先回顾下原逻辑:如果$foo未定义,先将其赋值为$bar,然后无论$foo初始状态如何,都要加上$bar。我们可以利用PHP的空合并运算符来进一步简化:
分两行的极简清晰版(PHP 7.4+)
$foo ??= $bar; $foo += $bar;
??=是空合并赋值运算符,作用是当左侧变量未定义或为null时,将右侧值赋给它,完美替代原代码里的if (!isset($foo)) { $foo = $bar; },代码更短且语义明确。
一行搞定版(PHP 7.0+)
如果想压缩到一行,也可以直接用空合并运算符组合加法:
$foo = ($foo ?? $bar) + $bar;
这个写法的逻辑和原代码完全一致:先判断$foo是否存在,存在就用原值,不存在就用$bar,然后统一加上$bar,比你写的三元表达式少了不少字符,可读性也更强。
对比你给出的三元写法,这两种方案都更简洁,而且利用PHP原生的语义化运算符,避免了三元表达式里嵌套赋值带来的可读性损耗。
内容的提问来源于stack exchange,提问作者DevonDahon
相关产品推荐
相关产品推荐

