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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 04:02:51