PHP null 合并运算符

在 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 企业主题
下一篇

0 条评论

像素鱼丸
83578 阅读
136 发布
3 收藏
动态
Mirage 主题 v2.54.0 发布
MirageV 主题 v2.6.4 发布
Botcan 插件 v2.7.1 发布,支持 AI 生成文章特色图片
MirageV 主题 v2.6.0 发布
BotV 插件 v1.7.0 发布
Mighty 企业主题 v1.10.0 发布
FishV 主题 v1.14 发布
MirageV-App 小程序 v1.2.2 发布
生成中...
真诚赞赏,手留余香
登录
注册
重置密码