PHP中判断变量已设置且非空的运算符需求
实现
(!empty($b)) ? $b : $c的安全替代写法 要实现当变量$b非空时返回$b,否则返回默认值$c的逻辑,且避免警告、不使用不规范的屏蔽写法,推荐以下几种方案:
方案一:直接使用完整的empty判断三元表达式
这是最直观且完全符合需求的写法,empty()本身会自动处理变量未定义的情况,不会抛出警告:
$result = !empty($b) ? $b : $c;
完全等价于你需要的(!empty($b)) ? $b : $c,逻辑清晰,无任何隐患。
方案二:封装自定义函数(适合多处复用)
如果这个逻辑在代码中频繁出现,可以封装一个简单函数来简化调用:
function nonEmpty($value, $default) { return !empty($value) ? $value : $default; } // 使用方式 $result = nonEmpty($b, $c);
函数内部通过empty()处理了变量存在性和非空判断,调用时无需担心未定义变量的警告,代码更简洁易读。
为什么不推荐其他写法?
$b ?: $c:当$b未定义时会触发"Undefined variable"警告,因为它会直接尝试读取$b的值;$b ?? $c:仅检查变量是否isset(),会返回空字符串、0、false等empty()判定为“空”的值,不符合你的需求;@$b ?: $c:通过错误抑制符屏蔽警告属于不规范写法,会掩盖潜在的变量未定义问题,不利于调试和维护。
内容的提问来源于stack exchange,提问作者Thomas
相关产品推荐
相关产品推荐

