PHP7.4后 ?? 与 ?:的区别

PHP7.4版本发布后,新增空(NULL)合并运算符??的语法糖,如果变量存在且值不为 NULL, 它就会返回自身的值,否则返回它的第二个操作数。与以前就存在的简写的条件运算符?:有点类似;

??与?:对比


a = 1;b = a ?: 2;//a 为true就返回自身,否者返回第二个操作数
c =a ?? 2;//a不为null就返回自身,否者返回第二个操作数
// dd(b,c);// int(1)  int(1)a = 0;
b =a ?: 2;//a 为true就返回自身,否者返回第二个操作数c = a ?? 2;//a不为null就返回自身,否者返回第二个操作数
// dd(b,c);// int(2)  int(0)

a = null;b = a ?: 2;//a 为true就返回自身,否者返回第二个操作数
c =a ?? 2;//a不为null就返回自身,否者返回第二个操作数
dd(b,$c);// int(2)  int(2)

空合并运算赋值符 ??=

$name = $name ?? 'john'
可以简写成
$name ??= 'john'