php ?? ?:

$a ?? 0 isset($a) ? $a : 0。

$a ?: 0 $a ? $a : 0。

isset():判断是否设置这个变量(值为null或只定义了变量没赋值返回false)
empty():判断这个变量是否为空(值为0,’0’,false,[],null,’’ 返回true)

本作品采用《CC 协议》,转载必须注明作者和本文链接
放肆疯狂,委婉洒脱。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 9

$a ?: 0 相当于 $a ? $a : 0 不要误导

3年前 评论
bigdaxin (楼主) 3年前
bigdaxin (楼主) 3年前
sunny123456 3年前
bigdaxin (楼主) 3年前
sunny123456 3年前

@荒街! $a ?: 0 这个不是等价于 $a ? ' ' : 0 不是吗? 我一直是这么理解的。

3年前 评论
命中水 3年前
$a ?:0;

?:相当于把$a逻辑运算,前提是定义了,

$a??0;

??相当于isset,都是语法糖而已!

3年前 评论
bigdaxin (楼主) 3年前
playmaker

判断数组中 是否存在 定义某个值 ,当值为null isset 返回false 可以参考 array_key_exists

3年前 评论
Mumujin

php5

是否存在


echo isset($a['b']) ? $a['b'] : 'no'

空值判断


echo $a ? $a : '1'

php7 php8

是否存在

echo $a['b'] ?? 'no'

$a ??= 'no'

$a['b'] ?? throw new OffsetDoesNotExist('b');

空值判断


echo $a ?: '1'
3年前 评论

看一遍文档 加深印象

3年前 评论
白小二

@荒街! 不要想太多,??判断是否设置,其它场景用 ?:

3年前 评论
xianyunyehe

当你不熟悉语法糖的时候, 就写完整的语法。

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!