PHP null 合并运算符
像素鱼丸
10-11
280

在 PHP 中,null 合并运算符(?? 是一个非常有用的运算符,用于简化对变量是否为 null 的判断。它在 PHP 7 中引入。


语法

$a = $b ?? $c;

这等价于:

$a = isset($b) ? $b : $c;

也就是说:

  • 如果 $b 存在且不为 null,则 $a 被赋值为 $b
  • 否则,$a 被赋值为 $c

示例

$name = $_GET['name'] ?? 'Guest';
echo "Hello, $name";

如果用户没有提供 name 参数(即 $_GET['name']null),那么 $name 就会是 'Guest'


与 isset() 的区别

  • isset($var):检查变量是否存在且不为 null
  • ?? 运算符:直接检查变量是否为 null 或未定义,并返回默认值。

更多示例

$username = $_POST['username'] ?? 'anonymous';
$age = $user['age'] ?? 0;
$role = $config['role'] ?? 'user';

这些代码都比使用 isset() 和三元运算符更简洁。


注意事项

  • ?? 不会检查变量是否存在,只检查是否为 null
  • 如果变量未定义(如 $var 不存在),?? 会返回右边的值。
  • 所以它比 isset() 更宽松。

与 ?:(三元运算符)对比

$a = isset($b) ? $b : $c;
$a = $b ?? $c;

两者效果相同,但 ?? 更简洁。


总结

特性 ?? 运算符 isset() + ?:
是否检查变量存在 不检查,只检查是否为 null 检查变量是否存在且非 null
语法 简洁 较长
适用场景 简单的默认值赋值 更复杂的条件判断

如果你有具体使用场景或代码片段,我可以帮你优化或解释!php

收藏
打赏
Woocomerce 模板开发基础
上一篇
Mighty 企业主题
下一篇

发表评论

注册不是必须的

像素鱼丸
156 文章
1 评论
4 喜欢
最新文章

退款和取消订单接口要不要合并

很多开发者在设计初期的常见思路。将“取消”和“退款”分开,从功能上看似乎很清晰,但在实际的复杂业务场景中,这种设计可能会带来一些问题。 更主流和推荐的设计是提供一个统一的“申请取消订单”接口,由后端服务根据订单的当前状态,自动路由到不同的处理逻辑。  为什么统一接口是更好的选择? 前端逻辑简化: 对于用户而言,他的诉求只有一个:“我不想要这个订单了”。无论订单是否支付,他在前端点击的都是“取消订单 […]

Mirage 主题 v3.7.0 发布

Mirage 主题 v3.7.0 发布 feat 增加拉黑用户功能 feat 移动端向下滑动时隐藏header,向上滑动时显示header 下载地址 https://gitee.com/vthemecn/mirage/releases/tag/v3.7.0 https://github.com/vthemecn/mirage/releases/tag/v3.7.0 新增功能截图

Mirage 主题 v3.6.0 发布

下载地址 Gitee下载地址:https://gitee.com/vthemecn/mirage/releases/tag/v3.6.0 Github下载地址:https://github.com/vthemecn/mirage/releases/tag/v3.6.0 更新内容 – feat 新增导航菜单悬浮顶部切换设置 – feat 增加隐藏登录按钮的设置 – feat 增加在前台显示登录按钮的 […]
生成中...
扫描二维码
扫描二维码