在 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
0 条评论