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 模板开发基础
上一篇
没有了
下一篇

0 条评论

像素鱼丸
73162 阅读
106 发布
3 收藏
动态
MirageV 主题 v2.6.4 发布
BotV 插件 v1.7.0 发布
LandV 企业主题 v2.6.0 发布
FishV 主题 v1.14 发布
FishV 主题 v1.21.0 发布
MirageV 主题 v2.5 正式发布
MirageV 主题 v2.6.0 发布
MirageV-App 小程序 v1.2.2 发布
生成中...
真诚赞赏,手留余香
登录
注册
重置密码