php中 ?: 和 ?? 的区别
?:和??都可以用来设置默认值,但它们的判断规则不同:?:判断左侧的值是否为真,??判断左侧的值是否存在且不为null。
?: 和 ?? 的区别
两者最核心的区别是:
?: 判断左侧的值是否为真
?? 判断左侧的值是否存在并且不为 null具体区别如下:
| 左侧的值 | $value ?: '默认值' | $value ?? '默认值' |
|---|---|---|
| 变量不存在 | 返回默认值,但可能产生警告 | 返回默认值,不产生警告 |
null | 返回默认值 | 返回默认值 |
false | 返回默认值 | 返回 false |
0 | 返回默认值 | 返回 0 |
'' | 返回默认值 | 返回空字符串 |
'0' | 返回默认值 | 返回字符串 '0' |
[] | 返回默认值 | 返回空数组 |
| 其他非空值 | 返回原值 | 返回原值 |
使用建议
当所有假值都需要替换成默认值时,使用 ?::
$displayName = $nickname ?: '匿名用户';当只需要处理变量不存在或值为 null 的情况时,使用 ??:
$page = $_GET['page'] ?? 1;
$enabled = $config['enabled'] ?? true;可以用一句话记住:
处理“假值”使用 ?:,处理“不存在或 null”使用 ??。版权所有
版权归属:念宇
