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