?? 是 PHP 7.0 引入的 空合并运算符(Null Coalescing Operator),它的作用如下:
1. 基本功能
语法:
$a ?? $b行为:
如果$a存在且不为null,则返回$a;否则返回$b(默认值)。
2. 在示例中的具体作用
<?php $sex = $user['sex'] ?? 0; ?>
检查逻辑:
若$user['sex']未设置(如$user数组中没有'sex'键)或其值为null,则$sex会被赋值为0(默认值);否则直接使用$user['sex']的值。
3. 与传统写法的对比
旧写法(PHP 5.x):
$sex = isset($user['sex']) ? $user['sex'] : 0;
新写法(PHP 7+):
更简洁,直接通过??实现相同逻辑。
4. 注意事项
仅检查
null:
与isset()行为一致,仅当变量为null或未定义时触发默认值(0、false、空字符串等非null值会被保留)。链式调用:
支持多级合并,如$a ?? $b ?? $c。
5. 典型应用场景
表单字段回显时设置默认值
处理可能未定义的数组键或对象属性
替代冗长的
isset()三元判断
这个运算符是 PHP 现代化语法的重要特性,能显著提升代码可读性。