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